CADiZ

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


The contraction command performs in situ replacements that are each like expansion steps but performed in the opposite direction. The earliest applicable contraction step in the list is the one that is applied.

Predicates

\lnot p1 \lor p2   \trarrow   p1 \implies p2
p1 \implies p2 \land p2 \implies p1   \trarrow   p1 \iff p2
\lnot (p1 \iff p2)   \trarrow   p1 \xor p2
\forall x : \tau @ x \in e1 \iff x \in e2   \trarrow   e1 = e2

where e1 and e2 are expressions of type \power \tau.

\exists s @ e1 = e2   \trarrow   e1 \in { s @ e2 }

where no references in e1 are bound to declarations in s (the variable release problem).

e . 1 \in e1 \land ... \land e . n \in en   \trarrow   e \in ( e1 \cross ... \cross en )
e . 1 = e1 \land ... \land e . n = en   \trarrow   e = ( e1, ..., en )
e . i1 = e1 \land ... \land e . in = en   \trarrow   e = \lblot i1 == e1, ..., in == en \rblot
e = e1 \lor ... \lor e = en   \trarrow   e \in { e1, ..., en }
e \in (relation _ operator)   \trarrow   relation operator application

Expressions

{ i1 : e1; ...; in : en }   \trarrow   e1 \cross ... \cross en
\lnot e1 \lor e2   \trarrow   e1 \implies e2
e1 \implies e2 \land e2 \implies e1   \trarrow   e1 \iff e2
\lnot (e1 \iff e2)   \trarrow   e1 \xor e2
( i.1, ..., i.n )   \trarrow   i
\lblot i1 == i.i1, ..., in == i.in \rblot   \trarrow   i

Tactic example

"contraction" p1 p2

This example applies the contraction command to predicates p1 and p2.


IT 5-Apr-2000