Constant | ::= integer |
| | inf | { minus infinity } |
| | sup | { plus infinity } |
|
Term | ::= Constant |
| | var | { suspend until assigned } |
| | min(var) | { min. of domain of X } |
| | max(var) | { max. of domain of X } |
| | card(var) | { size of domain of X } |
| | - Term |
| | Term + Term |
| | Term - Term |
| | Term * Term |
| | Term /> Term | { ceilinged division } |
| | Term /< Term | { floored division } |
| | Term mod Term | { floored remainder } |
| | Term rem Term | { truncated remainder } |
|
TermSet | ::= {Term,…,Term} |
|
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 + Term | { pointwise addition } |
| | Range - Term | { pointwise subtraction } |
| | Term - Range | { pointwise subtraction } |
| | Range mod Term | { pointwise floored remainder } |
| | Range rem Term | { pointwise truncated remainder } |
| | Range ? Range |
| | unionof(var,Range,Range) |
| | switch(Term,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 |