mk_iff_of_inductive_prop i r
makes an iff rule for the inductively defined proposition i
.
The new rule r
has the shape ∀ps is, i as ↔ ⋁_j, ∃cs, is = cs
, where ps
are the type
parameters, is
are the indices, j
ranges over all possible constructors, the cs
are the
parameters for each constructors, the equalities is = cs
are the instantiations for each
constructor for each of the indices to the inductive type i
.
In each case, we remove constructor parameters (i.e. cs
) when the corresponding equality would
be just c = i
for some index i
.
For example: mk_iff_of_inductive_prop
on list.chain
produces:
mk_iff_of_inductive_prop i r
makes an iff rule for the inductively defined proposition i
.
The new rule r
has the shape ∀ps is, i as ↔ ⋁_j, ∃cs, is = cs
, where ps
are the type
parameters, is
are the indices, j
ranges over all possible constructors, the cs
are the
parameters for each constructors, the equalities is = cs
are the instantiations for each
constructor for each of the indices to the inductive type i
.
In each case, we remove constructor parameters (i.e. cs
) when the corresponding equality would
be just c = i
for some index i
.
For example: mk_iff_of_inductive_prop
on list.chain
produces: