A resolver implements a resolution (or proof) procedure over logical clauses. The result of the resolution will be a
binding of variables in the query, to satisfy the query over the domain of resolution. Multiple bindings may be
possible, in which case subsequent calls to the
#resolve method will return them.
Resolution is presented as a search to satisfy a query over a domain, and as such, this interface extends
com.thesett.aima.search.QueueBasedSearchMethod. To prepare a search, add clauses to the domain
(
#addToDomain, then set the query as the starting point for the search
(
com.thesett.aima.search.QueueBasedSearchMethod#addStartState before calling the
com.thesett.aima.search.QueueBasedSearchMethod#findGoalPath() method. This interface provides alternatives to
these two methods, that present the search more directly in terms of clauses and variable bindings, though their
implementation should usually delegate to the search methods, these are
#setQuery and
#resolve.
The resolution procedure has been encapsulated beneath an interface because there can be many different
implementations. All resolvers that implement this interface work over Horn clauses.
CRC Card
Responsibilities | Collaborations
|
---|
Resolve a query over a set of Horn clauses.
|
Provide an iterator to generate all resolutions with.
|