The unification algorithm