Substitutions and Unification: the Martelli-Montanari Algorithm. Type inference rules for lambda and app.