coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: jd AT sophia.inria.fr (Joelle Despeyroux)
- To: sophia-listes-coq-club AT news-sop.inria.fr
- Subject: Re: A problem with double induction
- Date: 19 Dec 1997 08:39:31 GMT
- Newsgroups: sophia.listes.coq-club
- Organization: INRIA, Sophia-Antipolis (Fr)
> In general a double induction is simply solved by an induction on the
> first predicate (using Elim) followed by an Inversion over the second
> hypothesis.
Right. The problem is that Coq does not perform correct induction on
partially instanciated terms.
Christine is right. However, the "trick" does not solve the problem in
those cases where the induction hypothesis on the second predicate are
needed to perform the proof. This is rather usual in proofs on
semantics such as proofs of correctness of a compiler, for example.
For those cases, a simple "trick" always work: Change your goal to
avoid the instanciation of variables of the second predicate when
performing induction on the first predicate. For instance:
Change: Goal (n:nat)(even n)->(odd n)->False.
to: Goal (n:nat)(even n)->(m:nat) (odd m)-> (m=n) -> False.
No doubt this is not the intuitive double induction we have in mind!
Anyway, the implementation is correct.
Joelle Despeyroux.
- Re: A problem with double induction, Joelle Despeyroux
Archive powered by MhonArc 2.6.16.