]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/procedural/Coq/Logic/ProofIrrelevance.mma
f0b41ccae1b68b478e84794450ca9676e7e8efe5
[helm.git] / helm / software / matita / contribs / procedural / Coq / Logic / ProofIrrelevance.mma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "Coq.ma".
18
19 (*#***************************************************************************)
20
21 (*                 The Calculus of Inductive Constructions                  *)
22
23 (*                                                                          *)
24
25 (*                            Projet LogiCal                                *)
26
27 (*                                                                          *)
28
29 (*                     INRIA                        LRI-CNRS                *)
30
31 (*              Rocquencourt                        Orsay                   *)
32
33 (*                                                                          *)
34
35 (*                              May 29th 2002                               *)
36
37 (*                                                                          *)
38
39 (*#***************************************************************************)
40
41 (*#* This is a proof in the pure Calculus of Construction that
42     classical logic in Prop + dependent elimination of disjunction entails
43     proof-irrelevance.
44
45     Since, dependent elimination is derivable in the Calculus of
46     Inductive Constructions (CCI), we get proof-irrelevance from classical
47     logic in the CCI.
48
49     Reference:
50
51     - [Coquand] T. Coquand, "Metamathematical Investigations of a
52       Calculus of Constructions", Proceedings of Logic in Computer Science
53       (LICS'90), 1990.
54
55     Proof skeleton: classical logic + dependent elimination of
56     disjunction + discrimination of proofs implies the existence of a
57     retract from [Prop] into [bool], hence inconsistency by encoding any
58     paradox of system U- (e.g. Hurkens' paradox).
59 *)
60
61 include "Logic/Hurkens.ma".
62
63 (* UNEXPORTED
64 Section Proof_irrelevance_CC
65 *)
66
67 (* UNEXPORTED
68 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or.var
69 *)
70
71 (* UNEXPORTED
72 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_introl.var
73 *)
74
75 (* UNEXPORTED
76 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_intror.var
77 *)
78
79 (* UNEXPORTED
80 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_elim.var
81 *)
82
83 (* UNEXPORTED
84 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_elim_redl.var
85 *)
86
87 (* UNEXPORTED
88 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_elim_redr.var
89 *)
90
91 (* UNEXPORTED
92 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_dep_elim.var
93 *)
94
95 (* UNEXPORTED
96 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/em.var
97 *)
98
99 (* UNEXPORTED
100 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/B.var
101 *)
102
103 (* UNEXPORTED
104 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/b1.var
105 *)
106
107 (* UNEXPORTED
108 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/b2.var
109 *)
110
111 (*#* [p2b] and [b2p] form a retract if [~b1=b2] *)
112
113 inline procedural "cic:/Coq/Logic/ProofIrrelevance/p2b.con" as definition.
114
115 inline procedural "cic:/Coq/Logic/ProofIrrelevance/b2p.con" as definition.
116
117 inline procedural "cic:/Coq/Logic/ProofIrrelevance/p2p1.con" as lemma.
118
119 inline procedural "cic:/Coq/Logic/ProofIrrelevance/p2p2.con" as lemma.
120
121 (*#* Using excluded-middle a second time, we get proof-irrelevance *)
122
123 inline procedural "cic:/Coq/Logic/ProofIrrelevance/proof_irrelevance_cc.con" as theorem.
124
125 (* UNEXPORTED
126 End Proof_irrelevance_CC
127 *)
128
129 (*#* The Calculus of Inductive Constructions (CCI) enjoys dependent
130     elimination, hence classical logic in CCI entails proof-irrelevance.
131 *)
132
133 (* UNEXPORTED
134 Section Proof_irrelevance_CCI
135 *)
136
137 (* UNEXPORTED
138 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CCI/em.var
139 *)
140
141 inline procedural "cic:/Coq/Logic/ProofIrrelevance/or_elim_redl.con" as definition.
142
143 inline procedural "cic:/Coq/Logic/ProofIrrelevance/or_elim_redr.con" as definition.
144
145 inline procedural "cic:/Coq/Logic/ProofIrrelevance/or_indd.con" as theorem.
146
147 inline procedural "cic:/Coq/Logic/ProofIrrelevance/proof_irrelevance_cci.con" as theorem.
148
149 (* UNEXPORTED
150 End Proof_irrelevance_CCI
151 *)
152
153 (*#* Remark: in CCI, [bool] can be taken in [Set] as well in the
154     paradox and since [~true=false] for [true] and [false] in
155     [bool], we get the inconsistency of [em : forall A:Prop, {A}+{~A}] in CCI
156 *)
157