coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Robbert Krebbers <(e29315a54f%hidden_head%e29315a54f)mailinglists(e29315a54f%hidden_at%e29315a54f)robbertkrebbers.nl(e29315a54f%hidden_end%e29315a54f)>
- To: AUGER Cédric <(e29315a54f%hidden_head%e29315a54f)sedrikov(e29315a54f%hidden_at%e29315a54f)gmail.com(e29315a54f%hidden_end%e29315a54f)>
- Cc: coq-club <(e29315a54f%hidden_head%e29315a54f)coq-club(e29315a54f%hidden_at%e29315a54f)inria.fr(e29315a54f%hidden_end%e29315a54f)>
- Subject: Re: [Coq-Club] Positivity condition and nested recursion
- Date: Thu, 10 May 2012 01:23:56 +0200
Hello Cédric and Stéphane,
thanks for the answers!
On 05/09/2012 04:19 PM, AUGER Cédric wrote:
Do you not see why the strict positivity condition does not hold, or do
you not see why the strict positivity condition is not fit to allow what
you wrote and should be refined to allow it ?
Initially both. But after Stéphane's answer, I was clear that the definition in the reference manual disallows it due to the implicit argument of length.
For the second point, things are less obvious, and I know there are
cases where it could be allowed without breaking consistency.
Russell O’Connor's example at #coq
Inductive val : Type := bad : ((fun X : Type => X -> X) val) -> val
clearly showed me why functions in constructor arguments are unsafe in general.
However, Agda allows my definition! But apparently it is non-trivial to type check, see [1].
Robbert
[1] https://lists.chalmers.se/pipermail/agda/2012/003992.html
- [Coq-Club] Positivity condition and nested recursion, Robbert Krebbers, 05/09/2012
- Re: [Coq-Club] Positivity condition and nested recursion, Stéphane Glondu, 05/09/2012
- Re: [Coq-Club] Positivity condition and nested recursion, AUGER Cédric, 05/09/2012
- Re: [Coq-Club] Positivity condition and nested recursion, Stéphane Glondu, 05/09/2012
- Re: [Coq-Club] Positivity condition and nested recursion, Robbert Krebbers, 05/10/2012
Archive powered by MHonArc 2.6.18.