Substitutions
A substitution ti / vi specifies substitution of term ti for variable vi. Unification will produce a set of substitutions that make two literals the same.
A substitution set can be represented as either sequential substitutions (done one at a time in sequence) or as simultaneous substitutions (done all at once). Unification can be done correctly either way.
We will assume a simultaneous substitution, using the function sublis. (sublis alist form ) performs the substitutions specified by alist in the formula form. alist is of the form (( var term ) ... ).
Suppose we want to substitute {a/x, f(b)/y} in P(x, y). As a call to sublis, this is:
(sublis '((x (a)) (y (f (b)))) '(p x y)) = (P (A) (F (B)))