public IEnumerable <bool> unify(object arg) { arg = YP.getValue(arg); if (arg is Variable) { return(((Variable)arg).unify(this)); } else { return(Equals(arg) ? YP.succeed() : YP.fail()); } }