coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Anthony Bordg <bordg.anthony AT gmail.com>
- To: Edwin Westbrook <westbrook AT kestrel.edu>, coq-club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] From equality of foralls to equality of their bodies
- Date: Tue, 17 Dec 2013 10:38:22 +0100
Hi,
A long time ago I ran into similar questions and came to the same conclusions. These kind of "simplifications" as (forall (x:A), B x) = (forall (x:A), B' x) ->forall (x:A), B x = B' x and so by function extensionality (fun x => B x) = (fun x => B' x)) are unprovable and provably false with univalence.
For instance, you can ask a similar question with Sigma types at least for the independant case it gives: is forall (A B C: U), C -> A * C = B * C -> A = B provable (where U is a univalent universe) ? Actually this is not the case and provably false, ie the type (forall (A B C: U), C -> A * C = B * C -> A = B) -> false, is inhabited. The proof has the same flavour and goes through the following lines:
2013/12/16 Edwin Westbrook <westbrook AT kestrel.edu>
Great, thanks, that was very helpful!-EOn Dec 16, 2013, at 10:57 AM, Jason Gross <jasongross9 AT gmail.com> wrote:Consider [forall x, if x then unit else bool] and [forall x, if x then bool else unit]. They are equal by univalence, but [if x then unit else bool != if x then bool else unit]. You can think of [forall x : A, B x] as an A-indexed product; up to isomorphism, X * Y = Y * X (and more generally for automorphisms of A). But the functions, unlike the Pi types, do care about the ordering/naming of the components.-JasonOn Mon, Dec 16, 2013 at 11:53 AM, Edwin Westbrook <westbrook AT kestrel.edu> wrote:
Yeah, I was just starting to think of univalence…What if both A and (forall (x:A) B x) are known to be inhabited?Thanks,-EddyOn Dec 13, 2013, at 7:58 PM, Jason Gross <jasongross9 AT gmail.com> wrote:It is false, if you assume univalence. Consider A = bool, and B x = if x then True else False, and B' x = if x then False else True. Univalence gives (forall (x:A), B x) = (forall (x:A), B' x) (because they are isomorphic types; both are isomorphic to the empty set), but it is clear that we shouldn't have forall x, B x = B' x (and thus can't have (fun x => B x) = (fun x => B' x)), because True != False. Therefore, it's unprovable in vanilla Coq, and provably false in Coq + Univalence.I'm not sure what it's status is if you have some particular axiom that contradicts univalence. (As an extreme example, you could probably take it to be true as an axiom. I don't think this is inconsistent, but it might be.)-JasonOn Fri, Dec 13, 2013 at 9:20 PM, Edwin Westbrook <westbrook AT kestrel.edu> wrote:Hi,
Does anyone know if the following lemma is provable in Coq? I am perfectly happy to use functional extensionality, or even stronger axioms, as I am already using informative excluded middle:
Lemma pi_eq_to_app_eq A B B' :
(forall (x:A), B x) = (forall (x:A), B' x) ->
(fun x => B x) = (fun x => B' x).
Thanks in advance!
-Eddy
- [Coq-Club] From equality of foralls to equality of their bodies, Edwin Westbrook, 12/14/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Jason Gross, 12/14/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Edwin Westbrook, 12/16/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Jason Gross, 12/16/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Edwin Westbrook, 12/16/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Anthony Bordg, 12/17/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Edwin Westbrook, 12/16/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Jason Gross, 12/16/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Edwin Westbrook, 12/16/2013
- Re: [Coq-Club] From equality of foralls to equality of their bodies, Jason Gross, 12/14/2013
Archive powered by MHonArc 2.6.18.