Constraints - MASKOR/gologpp GitHub Wiki

Taptenc Semantics

With the taptenc semantics, we can process constraints of the following forms:

Constraint ::= ActionFormula ":" StateFormula

ActionFormula ::= Hook "(" ActionSpec ")"
    | ActionFormula "|" ActionFormula
    | "during" "(" ActionSpec ")"
Hook ::= "start" | "end" | "finish" | "fail" | "cancel"
ActionSpec ::= ActionName "(" [ ActionArgs ] ")"
ActionArgs ::= "*" | Value [ "," ActionArgs ]

StateFormula ::= AtomicSF 
    | UnaryOp AtomicSF
    | AtomicSF BinaryOp AtomicSF
AtomicSF ::= "state" "(" Component ")"
    | AtomicSF "|" AtomicSF
    | "!" AtomicSF
UnaryOp ::= "future" | "past"

BinaryOp ::= "until" | "since"

Note that the general golog++ constraint syntax is less restrictive than this, so more powerful platform semantics can be implemented without extending the parser.