Our planning problems are specified in an extension of the PDDL
language [McDermott1998]; we support PDDL typing, equality,
quantified goals and effects, disjunctive preconditions, and
conditional effects. In addition, we handle metric values with two new
built-in types: float and fluent. A float's value may not
change over the course of a plan, whereas a fluent's value may change
from time step to time step. Moreover, we support fluent- and
float-valued functions, such as ?distance[Nagoya,Stockholm]
.
Floats and fluents are manipulated with three special built-in predicates: test, set, and influence. Test statements are used as predicates in action preconditions; set and influence are used in effects. As its argument, test takes a constraint (an equality or inequality between two expressions composed of floats, fluents, and basic arithmetic operations); it evaluates to true if and only if the constraint holds. Set and influence each take two arguments: the object (a float or fluent) and an expression. If an action causes a set to be asserted, the object's value after the action is defined to be the expression's value before the action. An asserted influence changes an object's value by the value of the expression, as in the equation ; multiple simultaneous influences are cumulative in their effect [Falkenhainer and Forbus1988].