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