#### 10.10.13.1 Syntax of Indexicals

 Constant ::= integer | `inf` { minus infinity } | `sup` { plus infinity } FixTerm ::= Constant | var { suspend until assigned } Term ::= `min(var)` { min. of domain of X } | `max(var)` { max. of domain of X } | `card(var)` { size of domain of X } | FixTerm | `-` FixTerm | Term `+` FixTerm | Term `-` FixTerm | Term `*` FixTerm | Term `/>` FixTerm { ceilinged division } | Term `/<` FixTerm { floored division } | Term `mod` FixTerm { floored remainder } | Term `rem` FixTerm { truncated remainder } TermSet ::= `{FixTerm,…,FixTerm}` Range ::= TermSet | `dom(var)` { 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 `rem` Range { pointwise remainder } | Range `+` FixTerm { pointwise addition } | Range `-` FixTerm { pointwise subtraction } | FixTerm `-` Range { pointwise subtraction } | Range `mod` FixTerm { pointwise floored remainder } | Range `rem` FixTerm { pointwise truncated remainder } | Range `?` Range | `unionof(var,Range,Range)` | `switch(FixTerm,MapList)` ConstantSet ::= `{integer,…,integer}` ConstantRange ::= ConstantSet | Constant `..` Constant | ConstantRange `/\` ConstantRange | ConstantRange `\/` ConstantRange | `\` ConstantRange MapList ::= `[]` | `[integer-ConstantRange|MapList]` CTable ::= `[]` | `[CRow|CTable]` CRow ::= `[]` | `[integer|CRow]` | `[ConstantRange|CRow]` CList ::= `[]` | `[integer|CList]` VList ::= `[]` | `[var|VList]` Indexical ::= var `in` Range Indexicals ::= Indexical | Indexical `,` Indexicals ConstraintBody ::= var { `X` stands for `X#=1` } | `true` | `false` | `1` | `0` | var `in` ConstantRange | `element(var,CList,var)` | `table([VList],CTable)` | LinExpr RelOp LinExpr | `#\ ConstraintBody` | `ConstraintBody #/\ ConstraintBody` | `ConstraintBody #\/ ConstraintBody` | `ConstraintBody #=> ConstraintBody` | `ConstraintBody #\ ConstraintBody` | `ConstraintBody #<=> ConstraintBody` IxConstraintBody ::= Indexicals | ConstraintBody Head ::= term { a compound term with unique variable args } TellPos ::= Head `+:` IxConstraintBody TellNeg ::= Head `-:` Indexicals AskPos ::= Head `+?` Indexical AskNeg ::= Head `-?` Indexical ConstraintDef ::= TellPos | TellNeg | AskPos | AskNeg

Send feedback on this subject.