SPEC ::= BASIC-SPEC
| translation SPEC RENAMING
| reduction SPEC RESTRICTION
| union SPEC+
| extension SPEC+
| free-spec SPEC
| local-spec SPEC SPEC
| closed-spec SPEC
| spec-inst SPEC-NAME FIT-ARG*
RENAMING ::= renaming SYMB-MAP-ITEMS+
RESTRICTION ::= hide SYMB-ITEMS+
| reveal SYMB-MAP-ITEMS+
SPEC-DEFN ::= spec-defn SPEC-NAME GENERICITY SPEC
GENERICITY ::= genericity PARAMS IMPORTS
PARAMS ::= params SPEC*
IMPORTS ::= imports SPEC*
FIT-ARG ::= fit-spec SPEC SYMB-MAP-ITEMS*
| fit-view VIEW-NAME FIT-ARG*
VIEW-DEFN ::= view-defn VIEW-NAME GENERICITY VIEW-TYPE
SYMB-MAP-ITEMS*
VIEW-TYPE ::= view-type SPEC SPEC
SYMB-ITEMS ::= symb-items SYMB-KIND SYMB+
SYMB-MAP-ITEMS ::= symb-map-items SYMB-KIND SYMB-OR-MAP+
SYMB-KIND ::= implicit | sorts | ops | preds
! SYMB ::= ID | qual-id ID TYPE
! TYPE ::= OP-TYPE | PRED-TYPE | SORT
SYMB-MAP ::= symb-map SYMB SYMB
SYMB-OR-MAP ::= SYMB | SYMB-MAP
SPEC-NAME ::= SIMPLE-ID
VIEW-NAME ::= SIMPLE-ID
TOKEN-ID ::= ... | COMP-TOKEN-ID
MIXFIX-ID ::= ... | COMP-MIXFIX-ID
COMP-TOKEN-ID ::= comp-token-id TOKEN ID+
COMP-MIXFIX-ID ::= comp-mixfix-id TOKEN-PLACES ID+