Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club]Induction and tuple destruction

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club]Induction and tuple destruction


chronological Thread 
  • From: Adam Chlipala <adamc AT cs.berkeley.edu>
  • To: Peter Hawkins <hawkinsp AT cs.stanford.edu>
  • Cc: coq-club AT pauillac.inria.fr
  • Subject: Re: [Coq-Club]Induction and tuple destruction
  • Date: Sun, 28 Jan 2007 12:08:52 -0800
  • List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>

Peter Hawkins wrote:
However, this seemingly identical statement is cannot be proved using
those tactics:
Lemma foo_lem2: forall a1 b1 a2 b2, foo (a1,b1) (a2,b2) .
 (a1 <= a2)%nat.
Proof.
 induction 1.

At this stage I have this goal:
2 subgoals

 a1 : nat
 b1 : nat
 a2 : nat
 b2 : nat
 s : nat * nat
 ============================
  (a1 <= a2)%nat

which obviously cannot be proved.

It seems the induction tactic didn't generate the hypotheses (s =
(a1,b1)) and (s = (a2,b2)). What's happening here, and how can I fix
it? I'm using Coq 8.1gamma.

I'm not aware of any automatic workaround. 'induction' generalizes all arguments as variables, dropping any information about structure. The standard fix is to first prove a lemma whose statement gives those hypotheses explicitly.





Archive powered by MhonArc 2.6.16.

Top of Page