Compare this node's AttributeCell to a standard provided; if
min and max of this node's cell are within the bounds specified
by the standard, return true.
When passed a Variable, and also a second predicate, returns
the object from the second predicate that corresponds to the
position of the Variable in this predicate.
If a variable can be unified with an object or variable within
the context of previous substitutions, then true is returned
(can't just change the UT.ht because rest of predicate might not
unify, or might want to try other combos.)
Returns NULL if no valid substitution exists.
Return a predicate with as many variables as possible replaced by
constants; if at least one variable is replaced, return a new
predicate; else return null.
This version of makeProvidesForProvisions looks to fill
provision variables by making Provides between the vars and
vars of the parent that they are unified with.
ObjectiveCells contain a set of ANDed predicate goals that the
planner will try to achieve, and a list of the tasks that the
planner has selected to achieve them.
Input is a list of actions that the system wants the reader to
perform; output is a list of actions which the system believes
it can get the reader to intend to perform.
Loop on objectives to get all possible tasks; choose single
task using getBestNextTask; determine what else the best task
covers, then plan again for objectives that are not covered.
When adding a Node to a Plan, use this function to propagate
the Node's attributes upward, modifying attribute features for
successive parents until the root is updated.
When you create a Predicate, if the name of the predicate
corresponds to the name of a java class, the constructor of that
class will be called automatically.
Tasks contain a Conjunction of Predicate specifications for their
preconditions and outcomes, and a Vector of Predicate
specifications for their parameters and provisions, so that the
planner knows when and how they can be used.
UnificationTable.java
A unification table is required to keep track of which Variables
have been matched against each other; otherwise transitivity might be
lost through a series of pairwise comparisons, i.e ?z matches ?x,
?x matches Apple, what does ?z match now? store ?z/?x/Apple in table
Every variable has two identities: a set of variables and possibly
one constant to which it is bound (stored in "ht"); and a
substitution set that lists possible additional bindings under
consideration by the unification process (stored in "subs").