SPEC ::= BASIC-SPEC | TRANSLATION | REDUCTION
| UNION | EXTENSION | FREE-SPEC | LOCAL-SPEC
| CLOSED-SPEC | SPEC-INST
TRANSLATION ::= translation SPEC RENAMING
RENAMING ::= renaming SYMB-MAP-ITEMS+
REDUCTION ::= reduction SPEC RESTRICTION
RESTRICTION ::= HIDE | REVEAL
HIDE ::= hide SYMB-ITEMS+
REVEAL ::= reveal SYMB-MAP-ITEMS+
UNION ::= union SPEC+
EXTENSION ::= extension SPEC+
FREE-SPEC ::= free-spec SPEC
LOCAL-SPEC ::= local-spec SPEC SPEC
CLOSED-SPEC ::= closed-spec SPEC
SPEC-DEFN ::= spec-defn SPEC-NAME GENERICITY SPEC
GENERICITY ::= genericity PARAMS IMPORTS
PARAMS ::= params SPEC*
IMPORTS ::= imports SPEC*
SPEC-INST ::= spec-inst SPEC-NAME FIT-ARG*
FIT-ARG ::= FIT-SPEC | FIT-VIEW
FIT-SPEC ::= fit-spec SPEC SYMB-MAP-ITEMS*
FIT-VIEW ::= 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
! QUAL-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+