32#include "Substitution.hpp"
45using UPair = pair<Term* ,Term*>;
50enum class UnificationOutcome {Succeed, ConflictFail, OccursFail};
55ostream& operator<<(ostream&,
const UnificationOutcome&);
97 UnificationOutcome complete_unification();
138 UnificationOutcome
operator()(
const vector<Term*>&,
139 const vector<Term*>&);
168 friend ostream& operator<<(ostream&,
const Unifier&);
Basic representation of literals, bundling together (pointers to) a Predicate, a collection of argume...
Definition Literal.hpp:50
General representation of a substitution.
Definition Substitution.hpp:57
string to_string(bool=false) const
Make a string representation.
Definition Substitution.cpp:28
General representation of terms.
Definition Term.hpp:62
Wrap up various applications of unificiation into a single class: all the unification you need to do ...
Definition Unifier.hpp:83
void backtrack()
Apply the backtracking process to the substitution that has been constructed.
Definition Unifier.cpp:134
string to_string(bool subbed=false) const
Make a nice string representation.
Definition Unifier.hpp:164
Substitution get_substitution() const
Trivial get methods for the result.
Definition Unifier.hpp:116
UnificationOutcome operator()(Term *, Term *)
Implementation of unification for a pair of Terms.
Definition Unifier.cpp:28
Unifier()
There isn't really much to initialize.
Definition Unifier.hpp:102
Unifier(const Unifier &)=delete
You really only need one Unifier!