CADiZ

Reference manual / Z-related commands / Proof rule commands / induction


The induction command is applicable to a name in a goal, where the name refers to anything defined in a free type paragraph. It makes the induction constraint implied by the free type paragraph available as an antecedent in the sub-goal.

Given the general form of a free type,

f1 ::= h1,1 ... h1,m1 | g1,1 \ldata e1,1 \rdata ... g1,n \ldata e1,n \rdata
& ... &
fr ::= hr,1 ... hr,mr | gr,1 \ldata er,1 \rdata ... gr,nr \ldata er,nr \rdata

the induction constraint for a free type paragraph is

\forall f1' : \power f1; ...; fr' : \power fr |
    h1,1 \in f1' \land ... \land h1,m1 \in f1' \land
    ... \land
    hr,1 \in fr' \land ... \land hr,mr \in fr' \land
    (\forall y1,1 : \mu f1 == f1'; ...; fr == fr' @ e1,1 @ g1,1 y1,1 \in f1') \land
    ... \land
    (\forall y1,n1 : \mu f1 == f1'; ...; fr == fr' @ e1,n1 @ g1,n1 y1,n1 \in f1') \land
    ... \land
    (\forall yr,1 : \mu f1 == f1'; ...; fr == fr' @ er,1 @ gr,1 yr,1 \in fr') \land
    ... \land
    (\forall yr,nr : \mu f1 == f1'; ...; fr == fr' @ er,nr @ gr,nr yr,nr \in fr') @
    f1' = f1 \land ... \land fr' = fr

Tactic example

"induction" e1 e2

This example applies the induction command to expressions e1 and e2.


IT 19-Feb-1999