Skip to Content.
Sympa Menu

coq-club - Re: Strange non-wellformed error with Coinductive types

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: Strange non-wellformed error with Coinductive types


chronological Thread 
  • From: Ivan Scagnetto <scagnett AT dimi.uniud.it>
  • To: Christine.Paulin-Mohring AT inria.fr (Christine Paulin-Mohring)
  • Cc: coq-club AT pauillac.inria.fr, miculan AT dimi.uniud.it
  • Subject: Re: Strange non-wellformed error with Coinductive types
  • Date: Mon, 5 Jan 1998 11:00:55 +0100 (MET)

According to Christine Paulin-Mohring:
> In order to check the well-formednes of fixpoint definition, Coq
> expands names but only transparent names. The so-called opaque names
> are considered as abstract proofs, there is no need to keep the
> underlying proof object. The default in Coq is that a theorem or
> lemma is opaque while a definition is transparent. But an opaque 
> constant can be made transparent using the command 
> Transparent WEIRD. A better solution is to replace the keywords
> Lemma / Qed. in the WEIRD definition by Definition / Defined.

This sounds correct in the case WEIRD is associated with a proof-term,
i.e. it is delta-reducible. But what if WEIRD is an axiom?  In such
case, it cannot be replaced by any proof term, and hence the
well-formedness check fails.  Nevertheless, the coinductive call can
be well-formed.  This is the case of the previous example: in the term

       (a [n:N](WEIRD (ex_intro N [_:N]A n FOO) n))

the "a" constructor should guard everything in its arguments.  In
particular, any FOO call which appears as an argument of WEIRD cannot
"step over" the "a" constructor...  Therefore, although Coq does not
accept this proof term, we expected it to be guarded.  Or is it not?


Have a Happy New Year,
Ivan and Marino





Archive powered by MhonArc 2.6.16.

Top of Page