Node:Syntax of Indexicals, Next:Syntax of Arithmetic Expressions, Previous:Syntax Summary, Up:Syntax Summary
X --> variable { domain variable } Constant --> integer | inf { minus infinity } | sup { plus infinity } Term --> Constant | X { suspend until assigned } | min(X) { min. of domain of X } | max(X) { max. of domain of X } | card(X) { size of domain of X } | - Term | Term + Term | Term - Term | Term * Term | Term /> Term { division rounded up } | Term /< Term { division rounded down } | Term mod Term TermSet --> {Term,...,Term} Range --> TermSet | dom(X) { domain of X } | Term..Term { interval } | Range/\Range { intersection } | Range\/Range { union } | \Range { complement } | - Range { pointwise negation } | Range + Range { pointwise addition } | Range - Range { pointwise subtraction } | Range mod Range { pointwise modulo } | Range + Term { pointwise addition } | Range - Term { pointwise subtraction } | Term - Range { pointwise subtraction } | Range mod Term { pointwise modulo } | Range ? Range | unionof(X,Range,Range) | switch(Term,MapList) ConstantSet --> {integer,...,integer} ConstantRange --> ConstantSet | Constant..Constant | ConstantRange/\ConstantRange | ConstantRange\/ConstantRange | \ConstantRange MapList --> [] | [integer-ConstantRange|MapList] CList --> [] | [integer|CList] Indexical --> X in Range Indexicals --> Indexical | Indexical, Indexicals ConstraintBody --> Indexicals | LinExpr RelOp LinExpr | element(X,CList,X) | relation(X,MapList,X) Head --> term { a compound term with unique variable args } TellPos --> Head +: ConstraintBody. TellNeg --> Head -: ConstraintBody. AskPos --> Head +? Indexical. AskNeg --> Head -? Indexical. ConstraintDef --> TellPos. [TellNeg.] [AskPos.] [AskNeg.]