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