Actions

Action definitions and goal descriptions have the same syntax as in PDDL2.1.

$ \langle$ action-def$ \rangle$  ::=  ( :action $ \langle$ action symbol$ \rangle$
      [:parameters ( $ \langle$ typed list (variable)$ \rangle$ )]
      $ \langle$ action-def body$ \rangle$ )
$ \langle$ action symbol$ \rangle$  ::=  $ \langle$ name$ \rangle$
$ \langle$ action-def body$ \rangle$  ::=  [:precondition $ \langle$ GD$ \rangle$]
      [:effect $ \langle$ effect$ \rangle$]
$ \langle$ GD$ \rangle$  ::=  $ \langle$ atomic formula (term)$ \rangle$  |  ( and $ \langle$ GD$ \rangle$* )
   |   :equality ( = $ \langle$ term$ \rangle$ $ \langle$ term$ \rangle$ )
   |   :equality ( not ( = $ \langle$ term$ \rangle$ $ \langle$ term$ \rangle$ ) )
   |   :negative-preconditions ( not $ \langle$ atomic formula (term)$ \rangle$ )
   |   :disjunctive-preconditions ( not $ \langle$ GD$ \rangle$ )
   |   :disjunctive-preconditions ( or $ \langle$ GD$ \rangle$* )
   |   :disjunctive-preconditions ( imply $ \langle$ GD$ \rangle$ $ \langle$ GD$ \rangle$ )
   |   :existential-preconditions ( exists ( $ \langle$ typed list (variable)$ \rangle$ )
      $ \langle$ GD$ \rangle$ )
   |   :universal-preconditions ( forall ( $ \langle$ typed list (variable)$ \rangle$ )
      $ \langle$ GD$ \rangle$ )
   |   :fluents $ \langle$ f-comp$ \rangle$
$ \langle$ atomic formula (x)$ \rangle$  ::=  ( $ \langle$ predicate$ \rangle$ $ \langle$ x$ \rangle$* )  |  $ \langle$ predicate$ \rangle$
$ \langle$ term$ \rangle$  ::=  $ \langle$ name$ \rangle$  |  $ \langle$ variable$ \rangle$
$ \langle$ f-comp$ \rangle$  ::=  ( $ \langle$ binary-comp$ \rangle$ $ \langle$ f-exp$ \rangle$ $ \langle$ f-exp$ \rangle$ )
$ \langle$ binary-comp$ \rangle$  ::=  <  |  <=  |  =  |  >=  |  >
$ \langle$ f-exp$ \rangle$  ::=  $ \langle$ number$ \rangle$  |  $ \langle$ f-head (term)$ \rangle$
   |  ( $ \langle$ binary-op$ \rangle$ $ \langle$ f-exp$ \rangle$ $ \langle$ f-exp$ \rangle$ )  |  ( - $ \langle$ f-exp$ \rangle$ )
$ \langle$ f-head (x)$ \rangle$  ::=  ( $ \langle$ function symbol$ \rangle$ $ \langle$ x$ \rangle$* )  |  $ \langle$ function symbol$ \rangle$
$ \langle$ binary-op$ \rangle$  ::=  +  |  -  |  *  |  /

A $ \langle$ number$ \rangle$ is a sequence of numeric characters, possibly with a single decimal point (“.”) at any position in the sequence. Negative numbers are written as (- $ \langle$ number$ \rangle$ ).

The syntax for effects has been extended to allow for probabilistic effects, which can be arbitrarily interleaved with conditional effects and universal quantification.

$ \langle$ effect$ \rangle$  ::=  $ \langle$ p-effect$ \rangle$  |  ( and $ \langle$ effect$ \rangle$* )
   |   :conditional-effects ( forall ( $ \langle$ typed list (variable)$ \rangle$ ) $ \langle$ effect$ \rangle$ )
   |   :conditional-effects ( when $ \langle$ GD$ \rangle$ $ \langle$ effect$ \rangle$ )
   |   :probabilistic-effects ( probabilistic $ \langle$ prob-effect$ \rangle$ + )
$ \langle$ p-effect$ \rangle$  ::=  $ \langle$ atomic formula (term)$ \rangle$  |  ( not $ \langle$ atomic formula (term)$ \rangle$ )
   |   :fluents ( $ \langle$ assign-op$ \rangle$ $ \langle$ f-head (term)$ \rangle$ $ \langle$ f-exp$ \rangle$ )
   |   :rewards ( $ \langle$ additive-op$ \rangle$ $ \langle$ reward fluent$ \rangle$ $ \langle$ f-exp$ \rangle$ )
$ \langle$ prob-effect$ \rangle$  ::=  $ \langle$ probability$ \rangle$ $ \langle$ effect$ \rangle$
$ \langle$ assign-op$ \rangle$  ::=  assign  |  scale-up  |  scale-down  |  $ \langle$ additive-op$ \rangle$
$ \langle$ additive-op$ \rangle$  ::=  increase  |  decrease
$ \langle$ reward fluent$ \rangle$  ::=  ( reward )  |  reward

A $ \langle$ probability$ \rangle$ is a $ \langle$ number$ \rangle$ with a value in the interval [0, 1].

Håkan L. S. Younes
2005-12-06