Skip to Content.
Sympa Menu

coq-club - Re: A problem with double induction

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: A problem with double induction


chronological Thread 
  • 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.





Archive powered by MhonArc 2.6.16.

Top of Page