coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Stefan Monnier <monnier AT iro.umontreal.ca>
- To: coq-club AT inria.fr
- Subject: [Coq-Club] Non-strict positivity and impredicativity
- Date: Tue, 17 Mar 2020 17:43:20 -0400
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=monnier AT iro.umontreal.ca; spf=Pass smtp.mailfrom=monnier AT iro.umontreal.ca; spf=None smtp.helo=postmaster AT mailscanner.iro.umontreal.ca
- Ironport-phdr: 9a23:U20TfBSDeFonUD6KA3PXRiOeb9psv+yvbD5Q0YIujvd0So/mwa67YhaN2/xhgRfzUJnB7Loc0qyN7PCmBDRIyK3CmU5BWaQEbwUCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnZBUin4YAFyP6H+HpPYp8WxzeG7vZPJMCtSgz/oWq9/Ihyw5SDWsM8XjJEqfqM2zB3Ir2Fgev5Rg35tIlSPhRv14oG79cgwoGxrp/s9+psYAu3BdKMiQOkAVWh0AyUO/MTu8CL7Y06X/HJFAjcXiB0OHg3C6g3gU5719CDz5LIkiXuqePbuRLVxYgyMqqJiSRvmkiACbm5r8XvQzNF1i6RHuh+oo1p0ytyNOdzHBL9FZqrYOOgiay9BU8JWDHQTB4q9a5AEBuwHMPwerpP64UYLqh2iHwSlAKXkw20Qiw==
According to the paper "Inductively Defined Types", Coq requires
*strictly* positive types because non-strictly positive types can be
used together with impredicativity to introduce a Russel-style paradox.
More specifically, the paradox goes along the lines of
[ I here work off of
http://vilhelms.github.io/posts/why-must-inductive-types-be-strictly-positive/
rather than Coquand and Paulin(-Mohring)'s paper since that paper is
behind a paywall. ]
- Define `Inductive A : Type = introA : ((A → Prop) → Prop) → A`.
- Introduce an injective function `i : ∀X, X → (X → Prop)`.
- By composing `i` and `introA` we get an injective `f : (A → Prop) → A`.
- Define a suitable `P0 : A → Prop` and show that `P0 (f P0)` is both
true and not.
In the development, the definition used for `P0` would live in Type if
it weren't for impredicativity. Which seems like "the culprit".
But I also notice that the development defines `i` as an alias for Coq's
equality type. But this also only works because Coq's equality type
always lives in Prop, contrary to Agda and HoTT where it would live in
Type (because it's an equality between objects that themselves live in
Type). This is linked to the treatment of inductive type's indices
which are treated "impredicatively" in Coq but not in Agda.
Would it be possible to define an injective function from `X : Type` to
`X → Prop` if it weren't for Coq's impredicative treatment of indices?
If not, would that imply that non-strictly positive inductive types
would be safe even in the presence of Prop-style impredicativity?
Stefan
- [Coq-Club] Non-strict positivity and impredicativity, Stefan Monnier, 03/17/2020
- Re: [Coq-Club] Non-strict positivity and impredicativity, Fredrik Nordvall Forsberg, 03/18/2020
- Re: [Coq-Club] Non-strict positivity and impredicativity, Stefan Monnier, 03/19/2020
- Re: [Coq-Club] Non-strict positivity and impredicativity, Fredrik Nordvall Forsberg, 03/18/2020
Archive powered by MHonArc 2.6.18.