These are the rules that are common to CasEnv and FCasEnv.
These rules still contain some undefined non-terminals,
which are defined in the
CasFix format.
MORPHISM ::= morphism ( SORT-MAP, FUN-MAP, PRED-MAP )
SORT-MAP ::= sort-map ( sort-entry-tuple* ( SORT-ENTRY-TUPLE* ) )
SORT-ENTRY-TUPLE ::= sort-entry-tuple ( ID, SORT )
FUN-MAP ::= fun-map ( fun-entry-tuple* ( FUN-ENTRY-TUPLE* ) )
FUN-ENTRY-TUPLE ::= fun-entry-tuple ( funmap* ( FUNMAP* ) )
FUNMAP ::= funmap ( OP-TYPE, OP-NAME )
PRED-MAP ::= pred-map ( pred-entry-tuple* ( PRED-ENTRY-TUPLE* ) )
PRED-ENTRY-TUPLE ::= pred-entry-tuple ( predmap* ( PREDMAP* ) )
PREDMAP ::= predmap ( PRED-TYPE, PRED-NAME )
SIGNATURE ::= signature ( LOCAL-ENV, anno* ( ANNO* ) )
LOCAL-ENV ::= local-env ( SUBSORT-ENV, VAR-ENV, FUN-ENV, PRED-ENV )
SUBSORT-ENV ::= subsort-env ( subsort-entry-tuple* ( SUBSORT-ENTRY-TUPLE* ) )
SUBSORT-ENTRY-TUPLE ::= subsort-entry-tuple ( ID, SORT-ENTRY )
SORT-ENTRY ::= sort* ( SORT* )
VAR-ENV ::= var-env ( var-entry-tuple* ( VAR-ENTRY-TUPLE* ) )
VAR-ENTRY-TUPLE ::= var-entry-tuple ( SIMPLE-ID, VAR-ENTRY )
VAR-ENTRY ::= SORT
FUN-ENV ::= fun-env ( fun-entry-tuple* ( FUN-ENTRY-TUPLE* ) )
FUN-ENTRY-TUPLE ::= fun-entry-tuple ( ID, FUN-ENTRY )
FUN-ENTRY ::= op-type* ( OP-TYPE* )
PRED-ENV ::= pred-env ( pred-entry-tuple* ( PRED-ENTRY-TUPLE* ) )
PRED-ENTRY-TUPLE ::= pred-entry-tuple ( ID, PRED-ENTRY )
PRED-ENTRY ::= pred-type* ( PRED-TYPE* )
ANNO ::= number-lit-anno ( ID )
| floating-lit-anno ( ID, ID )
| string-lit-anno ( ID, ID )
| list-lit-anno ( ID, ID, ID )
| display-anno ( ID )
| prec-anno ( BOOL, id* ( ID* ), id* ( ID* ) )
| left-assoc-anno ( ID )
| right-assoc-anno ( ID )
BOOL ::= bool-true | bool-false