coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Pierre-Marie Pédrot <pierre-marie.pedrot AT inria.fr>
- To: coq-club AT inria.fr, Grant Jurgensen <mailing-lists.coq AT grant.jurgensen.dev>
- Subject: Re: [Coq-Club] Eliminating equalities over dependent function types
- Date: Wed, 3 Nov 2021 18:03:01 +0100
- Ironport-data: A9a23:pjyGEqrw9svtBJy/IEIMTc1tUCxeBmLHZxIvgKrLsJaIsI5as4F+vjcfDW3VO6qIYTahKoglaYuxpBtQuJDdzddnSABsqno8QiMRo6IpJ/zJdxaqZ3v6wu7rFR88sZ1GMrEsFC2FJ5Pljk/F3oPJ8D8sislkepKmULSdY3kpHlc/IMscoUkLd9AR09cAbeeRU1vlVePa+6UzCXf9s9JGGjp8B5Gr9HuDiM/PVAYw5TTSUxzkUGj2zBH5BLpHTU24wuCRroN8RoZWTM6bpF21E/+wwvsjNj+luu6TnkwiceeDZ07X1CoQAu7730F3zsAw+vdicqNCNQEK1XPQxYkZJNZl7PRcTS8xP6DWgulYVhBCEiw4JaBK4rjbCXm5q82aiUPcG5fp66w+URBsbNNwFuFfRDsmGeYjADsKd1WIg/+86KmqT/FlwMUlNsjieo0F0lllxDDdDPApBJTCWLnRo9RfxR8/nMlIAbDcetAWZDx0YRKGbxBRUmr7orpWcPyA1yC6KmME7Q/L4PNtui7I0QZqlqD3N8rcdpqMSNk9o6pRnUqel0yRP/3QHIb3JeK5z0+R
- Ironport-hdrordr: A9a23:JBDWp6MT3aImVcBcTuejsMiBIKoaSvp037By7TEWdfRUGvb3qyncpoVj6faUskdtZJhOo6HjBEDtex/hHNtOkO4s1NSZLXXbUQmTXeRfBOLZqlWKcUDDH6xmpMNdmsBFeaLN5DNB7PoSlTPIcOrIt+PmzEnHv4jjJjxWPHlXgulbnnxE4yigYzdLeDU=
On 03/11/2021 16:38, Grant Jurgensen wrote:
> I was wondering if the following property is provable (or disprovable)
> in Coq:
>
> Theorem forall_eq_elim: forall (A: Type) (B C: A -> Type),
> (forall a, B a) = (forall a, C a) ->
> (forall a, B a = C a).
>
> This is the converse of `forall_extensionality`, found in the standard
> module `Coq.Logic.FunctionalExtensionality`. Assuming functional
> extensionality, this `forall_eq_elim` property essentially states the
> injectivity of the forall binder.
I don't think it's disprovable because you have basically zero way to
prove an equality on types in CIC apart from reflexivity. But as soon as
you have a bit of power over equality this is dead wrong.
Take A := nat, B := fun _ => nat and C := fun _ => bool. By a
cardinality argument, (nat -> bool) = (nat -> nat) but there is no way
that bool = nat. The cardinality argument holds in quite a few models,
e.g. this is true both in Set and in HoTT.
If you pick a model where types are represented as syntactic codes it
might become provable but even there I am not sure.
PMP
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature
- [Coq-Club] Eliminating equalities over dependent function types, Grant Jurgensen, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Fabian Kunze, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Grant Jurgensen, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Pierre-Marie Pédrot, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Grant Jurgensen, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Pierre-Marie Pédrot, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Grant Jurgensen, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Hugo Herbelin, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Hugo Herbelin, 11/03/2021
- Re: [Coq-Club] Eliminating equalities over dependent function types, Fabian Kunze, 11/03/2021
Archive powered by MHonArc 2.6.19+.