coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Christian Doczkal <doczkal AT ps.uni-saarland.de>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y
- Date: Mon, 03 Jun 2013 15:04:49 +0200
Hello.
Pierre-Marie beat me to it, but here is the proof how it implies proof irrelevance:
Axiom sig_map_eq : forall
{A : Type}
(P : A -> Prop)
(x y : sig P),
proj1_sig x = proj1_sig y -> x = y.
Lemma proof_irrelevance (P:Prop) (p q : P) : p = q.
Proof.
set (A := exist (fun I => P) I p).
set (B := exist (fun I => P) I q).
change p with (proj2_sig A).
change q with (proj2_sig B).
cutrewrite (A = B). reflexivity.
apply sig_map_eq. reflexivity.
Qed.
Proof irrelevance is stronger than K an thus not provable in CIC and neither is sig_map_eq.
A useful special case where sig_map_eq is provable is for P of the form (fun X => b = true).
This is used heavily in Ssreflect.
Regards
Christian
Am 02.06.2013 23:45, schrieb Floyd Lee:
Hello list.
Is this deceptively simple theorem provable in Coq's logic?
Lemma sig_map_eq : forall
{A : Type}
(P : A -> Prop)
(x y : sig P),
proj1_sig x = proj1_sig y -> x = y.
Proof.
intros A P x y H_eq.
destruct x as [x Hx].
destruct y as [y Hy].
simpl in H_eq.
rewrite H_eq.
Error: Abstracting over the term "x" leads to a term
"fun x : A => exist P x Hx = exist P y Hy" which is ill-typed.
It would seem to need both proof irrelevance and functional
extensionality. Unfortunately, I can't seem to get to the point
that I can actually apply either of them.
_____________________________________________________________
---
http://mail.secureroot.com/ - free mailbox for hackers and geeks
- [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y, Floyd Lee, 06/03/2013
- Re: [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y, Adam Chlipala, 06/03/2013
- Re: [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y, Pierre-Marie Pédrot, 06/03/2013
- Re: [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y, Pierre-Marie Pédrot, 06/03/2013
- Re: [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y, Christian Doczkal, 06/03/2013
- <Possible follow-up(s)>
- Re: [Coq-Club] Provability of (proj_sig1 x) = (proj_sig1 y) -> x = y, Floyd Lee, 06/03/2013
Archive powered by MHonArc 2.6.18.