coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- 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.
- [Coq-Club]Induction and tuple destruction, Peter Hawkins
- Re: [Coq-Club]Induction and tuple destruction, Adam Chlipala
- Re: [Coq-Club]Induction and tuple destruction, Jean-Marc Notin
- Re: [Coq-Club]Induction and tuple destruction, David Pichardie
Archive powered by MhonArc 2.6.16.