allUnifiers :: (Unifiable a, WithinTraversable a f, Eq a) => 
  a -> f -> [Substitution (Names a) a]
allUnifiers from = mergeUnifiers . execWriter . (mapWithinM unifiers)
  where unifiers to = tell [unify from to] >> return to 
allUnifiers :: (Unifiable a, WithinTraversable a f, Eq a) => 
  a -> f -> [Substitution (Names a) a]
allUnifiers from = mergeUnifiers . execWriter . (mapWithinM unifiers)
  where unifiers to = tell [unify from to] >> return to 
allUnifiers from = mergeUnifiers . execWriter . (mapWithinM unifiers)
  where unifiers to = tell [unify from to] >> return to 