## Package org.opencyc.constraintsolver

Provides a finite domain constraint solver optimized to work with OpenCyc.

See:
Description

Class Summary
ArgumentTypeConstrainer: Provides argument type consistency checking for candidate backchaining rules, and also provides additional constraint rules derived from argument type constraints on the restricting constraint rules using the input constraint rules as a starting point.
ConstraintProblem: `ConstraintRule` object to model the attributes and behavior of a constraint problem.
ForwardCheckingSearcher: The `ForwardCheckingSearcher` object to perform forward checking search for one or more solutions to the `ConstraintProblem`.
Main: Main program for a finite domain constraint solver optimized to work with the OpenCyc Knowledge Base.
NodeConsistencyAchiever: The `NodeConsistencyAchiever` object achieves node consistency for the parent `ConstraintProblem` object.
ProblemParser: `ProblemParser` object to model the attributes and behavior of a parser which inputs the constraint problem representation and sets up the parent `ConstraintProblem` object.
RuleEvaluator: `RuleEvaluator` object evaluates constraint rules for the parent `ConstraintProblem` object.
UnitTest: Provides a suite of JUnit test cases for the `org.opencyc.constraintsolver` package.
ValueDomains: `ValueDomains` object to model the attributes and behavior of value domains of variables during forward checking search for one or more solutions to the `ConstraintProblem`.
VariableDomainPopulator: `VariableDomainPopulator` object to contain information about variables and applicable rules, and which determines the best rule to populate each variable.
VariablePopulationItem: `VariablePopulationItem` object to model the attributes of constraint variable value population by candidate rules.
VariablesByAscendingDomainSizeComparator: Implements a `Comparator` to sort variables for the `checkForwardNonEvaluatableRule` method of the `ForwardCheckingSearcher` class.
VariableSelectionAttributes: `VariableSelectionAttributes` object to model the attributes and sort behavior of a variable and its associated selection attributes.
VariableSelectionComparator: Implements a `Comparator` to sort variables for the `selectVariable` method of the `ForwardCheckingSearcher` class.

## Package org.opencyc.constraintsolver Description

Provides a finite domain constraint solver optimized to work with OpenCyc.

A finite domain constraint problem consists of a set of variables each of which has a finite set of possible values. The problem also has a set of constraint rules which are relations among one or more of the constraint variables. The solution to the constraint problem consists of the set of variable bindings to domain values which satisfy all the constraint rules.

This implementation of a finite domain constraint solver features the Forward Checking algorithm, which dramatically prunes the solution search space. Furthermore, a unique technique of lazy variable domain extension reduces the size of the variable domain data structure and the associated effort to maintain them.

OpenCyc enables backchaining inference to be combined with constraint solving so that the constraint rules may be transformed via modus ponens, and additional rules from the Knowledge Base can be automatically added to the problem together with their argument type constraints.

Many Knowledge Base queries have a form which is suitable for imput to the OpenCyc constraint solver.

This package is supported by the org.opencyc.cycobject package.