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