| constr-decl | ::= | constr-name [ annotation ] |
| | | constr-name of typeexpr [ annotation ] |
| annotation | ::= | begin { relation | completion_hint }+ end |
| side | ::= | left |
| | | right |
| invopp | ::= | inverse |
| | | opposite |
| rpo_status | ::= | lexicographic |
| | | multiset |
| completion_hint | ::= | completion precedence int |
| | | completion status rpo_status |
| relation | ::= | commutative [ ( comp ) ] |
| | | associative | |
| | | involutive | |
| | | idempotent [side] | |
| | | nilpotent [side] | |
| | | neutral [side] ( constr-name ) | |
| | | absorbent [side] ( constr-name ) | |
| | | absorbing [side] ( constr-name ) | |
| | | distributive [invopp] [side] ( constr-name [,constr-name] ) | |
| | | rule pattern -> expression | |
| | | completion completion_hint |