SPEC-DEFN ::= spec SPEC-NAME = SPEC end/
SPEC ::= BASIC-SPEC
| SPEC RENAMING
| SPEC RESTRICTION
| SPEC and SPEC and...and SPEC
| SPEC then SPEC then...then SPEC
! | free GROUPED-SPEC
| local SPEC within SPEC
! | GROUPED-SPEC
! GROUPED-SPEC ::= SPEC-NAME | { SPEC }
! RENAMING ::= rename SYMB-MAP-ITEMS,...,SYMB-MAP-ITEMS
! | require SYMB-ITEMS,...,SYMB-ITEMS
! RESTRICTION ::= hide SYMB-ITEMS,...,SYMB-ITEMS
! | reveal SYMB-OR-MAP-ITEMS,...,SYMB-OR-MAP-ITEMS
! SYMB-ITEMS ::= SYMB | SOME-SYMB-KIND SYMB,...,SYMB
! SYMB-MAP-ITEMS ::= SYMB-MAP | SOME-SYMB-KIND SYMB-MAP,...,SYMB-MAP
! SYMB-OR-MAP-ITEMS::= SYMB-OR-MAP | SOME-SYMB-KIND SYMB-OR-MAP,...,SYMB-OR-MAP
! SOME-SYMB-KIND ::= sort/sorts | op/ops | pred/preds
! SYMB ::= ID | QUAL-PRED-NAME | QUAL-OP-NAME
SYMB-MAP ::= SYMB "|->" SYMB
SYMB-OR-MAP ::= SYMB | SYMB-MAP
SPEC-NAME ::= SIMPLE-ID