CADiZ

Reference manual / Z-related commands / In situ replacement commands / predication


The predication command extracts the property that is implicit in a declaration, leaving the declaration unchanged (unlike normalization).

...; i : e; ... | p   \trarrow   ...; i : e; ... | i \in e \land p
...; i == e; ... | p   \trarrow   ...; i == e; ... | i = e \land p
...; e; ... | p   \trarrow   ...; e; ... | e \land p

In the first two rules, it must be the name of the declaration that is inspected. In the last rule, that of a schema inclusion declaration, it must be the schema inclusion declaration that is inspected, not the schema expression within it - an extra click of button 1 is needed. The extracted property is that schema expression used as a predicate.

The predication command can also be applied to declarations in the hypothesis part of a goal, the new predicate being generated as the first antecedent.

The predication command also makes some expressions used as predicates become predicates involving smaller expressions used as predicates.

[ds | p]   \trarrow   pred(ds) \land p
\lnot e   \trarrow   \lnot e
e1 \land e2   \trarrow   e1 \land e2
e1 \lor e2   \trarrow   e1 \lor e2
e1 \implies e2   \trarrow   e1 \implies e2
e1 \iff e2   \trarrow   e1 \iff e2
e1 \xor e2   \trarrow   e1 \xor e2
\forall s @ e   \trarrow   \forall s @ e
\exists s @ e   \trarrow   \exists s @ e
\exists1 s @ e   \trarrow   \exists1 s @ e

In the above rules, the predicates on the left are schema expressions used as predicates, formed from logical operations on schema expressions, whereas the predicates on the right are logical predicates, formed from logical operations on schema expressions used as predicates.

Tactic example

"predication" d1 d2

This example applies the predication command to declarations d1 and d2.


IT 15-Jan-1999