coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Jonathan Leivent <jonikelee AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] injectivity on existT
- Date: Mon, 30 May 2016 19:22:11 -0400
- Authentication-results: mail2-smtp-roc.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-f180.google.com
- Ironport-phdr: 9a23:F5dA5xX/MY07B0UyEfs00ZgUIg7V8LGtZVwlr6E/grcLSJyIuqrYZheOt8tkgFKBZ4jH8fUM07OQ6PCxHzFcqs/R+Fk5M7VyFDY9wf0MmAIhBMPXQWbaF9XNKxIAIcJZSVV+9Gu6O0UGUOz3ZlnVv2HgpWVKQka3CwN5K6zPF5LIiIzvjqbpq8yVPlkD3Wr1SIgxBSv1hD2ZjtMRj4pmJ/R54TryiVwMRd5rw3h1L0mYhRf265T41pdi9yNNp6BprJYYAu2pN5g/GLdfFXEtN30/zMztrxjKCwWVtVUGVWBDsB1OChTF5ReyeprwrCb8qqIp2i6cPM77Sb05cTun5qZvDhTvjXFUZHYC7GjLh5ko3+pgqxW7qkknzg==
Actually, I only had weak decidable equality (x=y \/ x<>y) for some of the types. But I proved a version of inj_pair2_eq_dec that works in that case:
Lemma inj_pair2_weak_eq_dec : forall A, (forall x y:A, x=y \/ x<>y) ->
( forall (P:A -> Type) (p:A) (x y:P p), existT P p x = existT P p y -> x = y ).
Proof.
intros A eq_dec.
apply eq_dep_eq__inj_pair2.
apply eq_rect_eq__eq_dep_eq.
apply Streicher_K__eq_rect_eq.
apply UIP_refl__Streicher_K.
cbv. intros.
apply eq_proofs_unicity.
apply eq_dec.
Qed.
-- Jonathan
On 05/30/2016 06:51 PM, Jonathan Leivent wrote:
On 05/30/2016 06:45 PM, Daniel Schepler wrote:
On Mon, May 30, 2016 at 2:50 PM, Adam Chlipala <adamc AT csail.mit.edu> wrote:In general, it requires an axiom. If you [Require Import Eqdep], you get itAnd in a specific case, if you have a decision procedure for equality
as [inj_pair2].
On 05/30/2016 05:48 PM, Jonathan Leivent wrote:
Is this provable?:
Lemma existT_inj : forall T f x a b, @existT T f x a = @existT T f x b ->
a = b.
I can't prove it with injectivity, or by f_equal with projT2. If it is
provable, what's the secret ingredient?
to x, then existT_inj holds for that case. (Ex: if T = nat; or if T =
option A, and x = None.)
That's precisely what I need - as I do have decidable equality for the type involved. I see it now: Eqdep_dec.inj_pair2_eq_dec:
Thanks!
-- Jonathan
- [Coq-Club] injectivity on existT, Jonathan Leivent, 05/30/2016
- Re: [Coq-Club] injectivity on existT, Adam Chlipala, 05/30/2016
- Re: [Coq-Club] injectivity on existT, Daniel Schepler, 05/31/2016
- Re: [Coq-Club] injectivity on existT, Jonathan Leivent, 05/31/2016
- Re: [Coq-Club] injectivity on existT, Jonathan Leivent, 05/31/2016
- Re: [Coq-Club] injectivity on existT, Jonathan Leivent, 05/31/2016
- Re: [Coq-Club] injectivity on existT, Daniel Schepler, 05/31/2016
- Re: [Coq-Club] injectivity on existT, Adam Chlipala, 05/30/2016
Archive powered by MHonArc 2.6.18.