| FixTerm | ::= IntConstant |
| | 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) |
|
| MapList | ::= [] |
| | [integer-IntegerRange|MapList] |
|
| CTable | ::= [] |
| | [CRow|CTable] |
|
| CRow | ::= [] |
| | [integer|CRow] |
| | [IntegerRange|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 IntegerRange |
| | element(var,CList,var) |
| | table([VList],CTable) |
| | LinIntExpr IRelOp LinIntExpr |
| | #\ 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 |