1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
19 (*#***********************************************************************)
21 (* v * The Coq Proof Assistant / The Coq Development Team *)
23 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
25 (* \VV/ **************************************************************)
27 (* // * This file is distributed under the terms of the *)
29 (* * GNU Lesser General Public License Version 2.1 *)
31 (*#***********************************************************************)
33 (*#* This is a proof in the pure Calculus of Construction that
34 classical logic in Prop + dependent elimination of disjunction entails
37 Since, dependent elimination is derivable in the Calculus of
38 Inductive Constructions (CCI), we get proof-irrelevance from classical
43 - [Coquand] T. Coquand, "Metamathematical Investigations of a
44 Calculus of Constructions", Proceedings of Logic in Computer Science
47 Proof skeleton: classical logic + dependent elimination of
48 disjunction + discrimination of proofs implies the existence of a
49 retract from [Prop] into [bool], hence inconsistency by encoding any
50 paradox of system U- (e.g. Hurkens' paradox).
53 include "Logic/Hurkens.ma".
56 Section Proof_irrelevance_CC
60 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or.var
64 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_introl.var
68 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_intror.var
72 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_elim.var
76 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_elim_redl.var
80 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_elim_redr.var
84 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/or_dep_elim.var
88 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/em.var
92 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/B.var
96 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/b1.var
100 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CC/b2.var
103 (*#* [p2b] and [b2p] form a retract if [~b1=b2] *)
105 inline procedural "cic:/Coq/Logic/ProofIrrelevance/p2b.con" as definition.
107 inline procedural "cic:/Coq/Logic/ProofIrrelevance/b2p.con" as definition.
109 inline procedural "cic:/Coq/Logic/ProofIrrelevance/p2p1.con" as lemma.
111 inline procedural "cic:/Coq/Logic/ProofIrrelevance/p2p2.con" as lemma.
113 (*#* Using excluded-middle a second time, we get proof-irrelevance *)
115 inline procedural "cic:/Coq/Logic/ProofIrrelevance/proof_irrelevance_cc.con" as theorem.
118 End Proof_irrelevance_CC
121 (*#* The Calculus of Inductive Constructions (CCI) enjoys dependent
122 elimination, hence classical logic in CCI entails proof-irrelevance.
126 Section Proof_irrelevance_CCI
130 cic:/Coq/Logic/ProofIrrelevance/Proof_irrelevance_CCI/em.var
133 inline procedural "cic:/Coq/Logic/ProofIrrelevance/or_elim_redl.con" as definition.
135 inline procedural "cic:/Coq/Logic/ProofIrrelevance/or_elim_redr.con" as definition.
137 inline procedural "cic:/Coq/Logic/ProofIrrelevance/or_indd.con" as theorem.
139 inline procedural "cic:/Coq/Logic/ProofIrrelevance/proof_irrelevance_cci.con" as theorem.
142 End Proof_irrelevance_CCI
145 (*#* Remark: in CCI, [bool] can be taken in [Set] as well in the
146 paradox and since [~true=false] for [true] and [false] in
147 [bool], we get the inconsistency of [em : forall A:Prop, {A}+{~A}] in CCI