...
BASIC-ITEMS ::= SORT-ITEMS | OP-ITEMS | SORT-GEN-ITEMS
| VAR-ITEMS | AXIOM-ITEMS
! SORT-ITEMS ::= SORT-S SORT-ITEM;...
SORT-S ::= sort | sorts
SORT-ITEM ::= SORT-DECL | SUBSORT-DECL | SUBSORT-DEFN
| ISO-DECL | DATATYPE-DECL
SORT-DECL ::= SORT,...,SORT
SUBSORT-DECL ::= SORT,...,SORT < SORT
SUBSORT-DEFN ::= SORT = { VAR : SORT . FORMULA }
ISO-DECL ::= SORT,...,SORT = SORT
! DATATYPE-DECL ::= SORT "::=" ALTERNATIVE "|"..."|" ALTERNATIVE
ALTERNATIVE ::= CONSTRUCT | SUBSORTS
CONSTRUCT ::= FUN-NAME : COMPONENT *...* COMPONENT | FUN-NAME
! | FUN-NAME :? COMPONENT *...* COMPONENT
! COMPONENT ::= ( FUN-NAME,...,FUN-NAME : SORT ) | SORT
! | ( FUN-NAME,...,FUN-NAME :? SORT )
SUBSORTS ::= SORT-S SORT,...,SORT
...
! SORT-GEN-ITEMS ::= OPT-FREELY generated SIG-DECL-GROUP
! OPT-FREELY ::= freely | EMPTY
! SIG-DECL-GROUP ::= { SIG-DECL-ITEMS;... }
| SORT-S SORT-ITEM | OP-S OP-ITEM
SIG-DECL-ITEMS ::= SORT-ITEMS | OP-ITEMS
...
! SORT ::= WORDS-ID
FUN-NAME ::= ID
PRED-NAME ::= ID
! VAR ::= WORDS
In this note, we shall concentrate on DATATYPE-DECL (which is a
SORT-ITEM) and on SORT-GEN-ITEMS (which are BASIC-ITEMS).
The DATATYPE-DECL construct provides a concise way to describe various
alternatives for a given sort, these alternatives being either subsorts or
functions the codomain of which is this sort. The syntax provides the
possibility to declare at the same time a function and the corresponding
selectors.
The SORT-GEN-ITEMS construct provides the possibility to express
generating constraints.
We'll also consider the FREE-SPEC construct in the structured specifications.
SPEC ::= BASIC-SPEC | TRANSLATION | REDUCTION
| UNION | EXTENSION | CONS-EXTN
| FREE-SPEC | LOCAL-SPEC | { SPEC }
...
FREE-SPEC ::= freely SPEC
Acknowledgements