The properties command is applicable to a name in a goal, where the name refers to a top-level declaration in the specification about which the specification provides some constraints (excepting names declared in the specification using the == notation, and also the names of schema paragraphs, for which use the expansion command). It makes the specification's constraints on that name available as antecedents in the sub-goal. Constraints that are newline-separated in the specification become comma-separated in the sub-goal. If the name is declared generically, the new antecedents are the specification's constraints instantiated according to the instantiation of the name in the goal.
In the case of a name that is declared in an axiomatic paragraph, properties makes available the constraint implicit in the declaration, along with the explicit constraints from the axiomatic paragraph.
i : e | ||
![]() |
![]() |
![]() |
ps |
![]() ![]() ![]() |
Global constraints on the name can be made available using the separate constraint command.
In the case of a name that is declared in a free type paragraph (as the name of either a free type, an element, or an injection), properties makes available the constraints from the paragraphs that the Z standard defines the free type paragraph as abbreviating.
f1 ::= h1,1 ... h1,m1 | g1,1 ![]() ![]() ![]() ![]() |
& ... & |
fr ::= hr,1 ... hr,mr | gr,1 ![]() ![]() ![]() ![]() |
-- membership |
hi,j ![]() |
gi,k ![]() ![]() ![]() |
-- totality |
![]() ![]() ![]() ![]() |
-- injectivity |
![]() ![]() |
-- disjointness |
![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
-- induction |
![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() |
![]() |
"properties" e1 e2
This example applies the properties command to expressions e1 and e2.