Next: Syntax of Real Expressions, Previous: Syntax of Range Expressions, Up: Syntax Summary [Contents][Index]
Please note: that the Prolog arithmetic operators /
and
//
do not mean the same thing.
LinIntExpr | ::= integer | |
| var | ||
| integer * var | ||
| integer * integer | ||
| - LinIntExpr | ||
| LinIntExpr + LinIntExpr | ||
| LinIntExpr - LinIntExpr | ||
| ConstraintBody | { if true then 1 else 0 } | |
IExpr | ::= LinIntExpr | |
| - IExpr | ||
| IExpr + IExpr | ||
| IExpr - IExpr | ||
| IExpr * IExpr | ||
| IExpr ^ IExpr | since release 4.9.0 | |
| IExpr /\ IExpr | since release 4.9.0 | |
| IExpr \/ IExpr | since release 4.9.0 | |
| IExpr \ IExpr | since release 4.9.0 | |
| IExpr / IExpr | { truncated division } | |
| IExpr // IExpr | { truncated division } since release 4.3 | |
| IExpr div IExpr | { floored division } since release 4.3 | |
| IExpr rem IExpr | { truncated remainder } | |
| IExpr mod IExpr | { floored remainder } | |
| min(IExpr,IExpr) | ||
| max(IExpr,IExpr) | ||
| abs(IExpr) | ||
| sign(RExpr) | { -1, 0, or 1 } | |
| integer(RExpr) | { requires integral RExpr } | |
| round(RExpr) | { to nearest integer } | |
| truncate(RExpr) | { truncate fractional part } | |
| floor(RExpr) | ||
| ceiling(RExpr) | ||
| \(IExpr) | since release 4.9.0 | |
| xor(IExpr,IExpr) | since release 4.9.0 | |
| if_then_else(IExpr,IExpr,IExpr) | since release 4.8.0 | |
IRelOp | ::= #= | #\= | #< | #=< | #> | #>= |