Unification Algorithm
Given two predicates that initially have no (universally quantified) variables in common, a unification algorithm should:
user=> (unify '(p x (a)) '(p (b) y ) ) ( (y (a)) (x (b)) (t t)) user=> (unify '(q (a)) '(q (b))) nil