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 (*i $Id: Eqdep_dec.v,v 1.14.2.1 2004/07/16 19:31:06 herbelin Exp $ i*)
35 (*#* We prove that there is only one proof of [x=x], i.e [(refl_equal ? x)].
36 This holds if the equality upon the set of [x] is decidable.
37 A corollary of this theorem is the equality of the right projections
38 of two equal dependent pairs.
40 Author: Thomas Kleymann |<tms@dcs.ed.ac.uk>| in Lego
41 adapted to Coq by B. Barras
43 Credit: Proofs up to [K_dec] follows an outline by Michael Hedberg
46 (*#* We need some dependent elimination schemes *)
49 Set Implicit Arguments.
52 (*#* Bijection between [eq] and [eqT] *)
54 inline procedural "cic:/Coq/Logic/Eqdep_dec/eq2eqT.con" as definition.
56 inline procedural "cic:/Coq/Logic/Eqdep_dec/eqT2eq.con" as definition.
58 inline procedural "cic:/Coq/Logic/Eqdep_dec/eq_eqT_bij.con" as lemma.
60 inline procedural "cic:/Coq/Logic/Eqdep_dec/eqT_eq_bij.con" as lemma.
63 Section DecidableEqDep
67 cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/A.var
70 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/comp.con ***)
72 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/comp.con" "DecidableEqDep__" as definition.
74 inline procedural "cic:/Coq/Logic/Eqdep_dec/trans_sym_eqT.con" as remark.
77 cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/eq_dec.var
81 cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/x.var
84 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu.con *****)
86 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu.con" "DecidableEqDep__" as definition.
88 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_constant.con *)
90 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_constant.con" "DecidableEqDep__" as definition.
92 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_inv.con *)
94 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_inv.con" "DecidableEqDep__" as definition.
96 inline procedural "cic:/Coq/Logic/Eqdep_dec/nu_left_inv.con" as remark.
98 inline procedural "cic:/Coq/Logic/Eqdep_dec/eq_proofs_unicity.con" as theorem.
100 inline procedural "cic:/Coq/Logic/Eqdep_dec/K_dec.con" as theorem.
102 (*#* The corollary *)
104 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/proj.con ***)
106 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/proj.con" "DecidableEqDep__" as definition.
108 inline procedural "cic:/Coq/Logic/Eqdep_dec/inj_right_pair.con" as theorem.
114 (*#* We deduce the [K] axiom for (decidable) Set *)
116 inline procedural "cic:/Coq/Logic/Eqdep_dec/K_dec_set.con" as theorem.