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.... 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
We'll also consider the FREE-SPEC construct in the structured specifications.
AcknowledgementsSPEC ::= BASIC-SPEC | TRANSLATION | REDUCTION | UNION | EXTENSION | CONS-EXTN | FREE-SPEC | LOCAL-SPEC | { SPEC } ... FREE-SPEC ::= freely SPEC