coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Robert R Schneck-McConnell <schneck AT math.berkeley.edu>
- To: aurelien.pardon AT ens-lyon.fr
- Cc: coq-club AT pauillac.inria.fr
- Subject: Re: [Coq-Club] cofix guards
- Date: Sat, 24 Jul 2004 10:13:51 -0400
- List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>
> I'm trying to make a proof on a coinductive type but I get the error
> "Recursive definition of H is ill-formed".
> My proof doesn't destruct the infinite object once but several times.
>
> I don't use my cofix hypothesis on the tail of my streams but on the tail^k
> (the tail of the tail of tail ... k times), which seems to be good because
> the
> term is (intellectually) in guarded form.
The real problem, from your simplified version, is that you don't actually
apply the coinductive constructor directly as a guard, but instead apply a
lemma (ifleche_trans), which itself is a fixpoint over a case analysis
where each case is guarded. The error message given by "Guarded" is very
explicit on this. Coq can't figure out that that's good enough
as a guard.
I don't know what the right workaround is; one option might be to add
ifleche_trans as an extra coinductive constructor, and then separately
prove that the new predicate is equivalent to the original (in that it
holds of the same arguments; of course the proofs are different).
Robert
- [Coq-Club] cofix guards, aurelien . pardon
- Re: [Coq-Club] cofix guards, Robert R Schneck-McConnell
Archive powered by MhonArc 2.6.16.