coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Adam Chlipala <adamc AT hcoop.net>
- To: Nadeem Abdul Hamid <nadeem AT acm.org>
- Cc: coq-club AT pauillac.inria.fr
- Subject: Re: [Coq-Club] Elim tactic and dependency problem
- Date: Tue, 03 Mar 2009 16:38:30 -0500
- List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>
Nadeem Abdul Hamid wrote:
Now, however, if 'func1' depends on a proof of 'expr1', then the elim tactic no longer succeeds, I guess because of the dependencies introduced:
Parameter elt : Set.
Parameter expr1 : nat -> bool.
Parameter func1 : forall i:nat, expr1 i = true -> option elt.
Goal forall i,
((if (expr1 i) as b return (expr1 i = b -> bool)
then fun X : expr1 i = true =>
match (func1 i X) with
| Some _ => true
| _ => false
end
else fun _ => false) (refl_equal _) = true) ->
elt.
Proof.
intros i.
elim (expr1 i).
Problem: "Abstracting over the term "expr1 i" leads to a term...
which is ill-typed."
The usual trick works: identify subterms that are causing trouble and generalize over them.
intros i.
generalize (func1 i).
elim (expr1 i).
- [Coq-Club] Elim tactic and dependency problem, Nadeem Abdul Hamid
- Re: [Coq-Club] Elim tactic and dependency problem, Adam Chlipala
Archive powered by MhonArc 2.6.16.