[rules = enum].
'Rules: enum.                    Location: SPADE$CHECKER:ENUM.RUL'.
''.
'These rules allow the manipulation of user-defined enumerated types,'.
'e.g. by allowing pred(succ(X)) and succ(pred(X)) to be replaced by X'.
'(where not at the relevant extremity) and by allowing various inferences'.
'about the inherited ordering of enumerated constants.'.


[rules = enum_cases].
'Rules: enum_cases.              Location: SPADE$CHECKER:ENUM.RUL'.
''.
'This is a family of rules allowing you to infer'.
''.
'             X=A1 or X=A2 or ... or X=An'.
''.
'for a variable X of enumerated type T, where'.
''.
'            type T = (A1, A2, ..., An)'.
''.
'for some n in 2..25 inclusive.  Rule enum_cases(N) is the rule'.
'for an enumeration with N enumeration constants.'.


[rules = enumeration].
'Rules: enumeration.             Location: SPADE$CHECKER:ENUM.RUL'.
''.
'These rules define further useful inequalities of enumerated types.'.
