Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] UIP and decidable equality

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] UIP and decidable equality


Chronological Thread 
  • From: Jonathan Leivent <jonikelee AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] UIP and decidable equality
  • Date: Mon, 12 Sep 2016 19:28:53 -0400
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jonikelee AT gmail.com; spf=Pass smtp.mailfrom=jonikelee AT gmail.com; spf=None smtp.helo=postmaster AT mail-qk0-f169.google.com
  • Ironport-phdr: 9a23:+55HQhBo0R2hqSnLRaxMUyQJP3N1i/DPJgcQr6AfoPdwSP7+oMbcNUDSrc9gkEXOFd2CrakV0qyI4uu5BiRAuc/H6yFaNsQUFlcssoY/p0QYGsmLCEn2frbBThcRO4B8bmJj5GyxKkNPGczzNBX4q3y26iMOSF2kbVImbtr8FoOatcmrzef6o8SVOFQRwmTsKuotZFXu9EOK55FQ2dMjYo8KiTLx6kNSfOpXwW46bXmypD3bovmKwZh47i5LsOgg/cMTGY/zfqA/UKAKRG9+azN9t4XXskzIShLK7X8BWE0XlABJCk7L9kLURJD05wn9sONh2CCcden7TK45Xyjqu6VsTh7rhSMKOhY29WjWjop7i6cN80HpnAB234OBONLdD/F5ZK6IJd4=



On 09/12/2016 04:48 PM, Jason Gross wrote:
Thorsten, your proof requires function extensionality, right?

Jonathan, the Coq statement is:
Definition stability A := forall x y : A, ~~(x = y) -> x = y.
Definition constant_endofunction_eq A : forall x y : A, { f : x = y -> x
= y | forall e1 e2, f e1 = f e2 }.
And the claim is [stability A -> constant_endofunction_eq A], that
[constant_endofunction_eq A -> UIP_on A], and that all of the standard type
formers preserved [stability].

OK - got it. I was able to prove [stability A -> constant_endofunction_eq A] given functional extensionality:

Definition stability A := forall x y : A, ~~(x = y) -> x = y.

Lemma dubneg: forall P:Prop, P -> ~~P.
Proof.
intros.
intro.
contradiction.
Defined.

Definition constant_endofunction_eq A :=
forall x y : A, { f : x = y -> x = y | forall e1 e2, f e1 = f e2 }.

Require Import FunctionalExtensionality.

Goal forall A, stability A -> constant_endofunction_eq A.
Proof.
intros A H.
red.
intros.
exists (fun e => H x y (dubneg _ e)).
intros.
f_equal.
apply functional_extensionality.
intro.
contradiction.
Qed.


I also have a version of Eqdep_dec now that works with nu being any constant_endofunction - as Alan pointed out earlier.

Cool! Thanks Thorsten and Jason!

Now the trick is to see if it is easier (than proving UIP directly) to prove a type preserves stability from its components...

And whether one can live with the requirement for this specific version of functional extensionality, especially those of us who prefer our bread unbuttered.

However, currently, I am making great progress on a nice way to prove eqdec or eqem on sigT equalities, provided the sigT equalities of the components...

-- Jonathan




Archive powered by MHonArc 2.6.18.

Top of Page