def match_variable(self, pattern, term): if can_unify([pattern.qtype, term.qtype]): if pattern.name in self.assignments: if self.assignments[pattern.name] == term: return raise UnificationError('Cannot match %s with both %s and %s.' % (pattern, term, assignments[pattern.name])) self.assignments[pattern.name] = term else: self.fail(pattern, term)
def match_constant(self, pattern, term): if pattern.name != term.name \ or not can_unify([pattern.qtype, term.qtype]): self.fail(pattern, term)