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 include "Init/Prelude.ma".
21 (*#***********************************************************************)
23 (* v * The Coq Proof Assistant / The Coq Development Team *)
25 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
27 (* \VV/ **************************************************************)
29 (* // * This file is distributed under the terms of the *)
31 (* * GNU Lesser General Public License Version 2.1 *)
33 (*#***********************************************************************)
35 (*i $Id: Eqdep_dec.v,v 1.14.2.1 2004/07/16 19:31:06 herbelin Exp $ i*)
37 (*#* We prove that there is only one proof of [x=x], i.e [(refl_equal ? x)].
38 This holds if the equality upon the set of [x] is decidable.
39 A corollary of this theorem is the equality of the right projections
40 of two equal dependent pairs.
42 Author: Thomas Kleymann |<tms@dcs.ed.ac.uk>| in Lego
43 adapted to Coq by B. Barras
45 Credit: Proofs up to [K_dec] follows an outline by Michael Hedberg
48 (*#* We need some dependent elimination schemes *)
51 Set Implicit Arguments.
54 (*#* Bijection between [eq] and [eqT] *)
56 inline procedural "cic:/Coq/Logic/Eqdep_dec/eq2eqT.con" as definition.
58 inline procedural "cic:/Coq/Logic/Eqdep_dec/eqT2eq.con" as definition.
60 inline procedural "cic:/Coq/Logic/Eqdep_dec/eq_eqT_bij.con" as lemma.
62 inline procedural "cic:/Coq/Logic/Eqdep_dec/eqT_eq_bij.con" as lemma.
65 Section DecidableEqDep
69 cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/A.var
72 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/comp.con ***)
74 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/comp.con" "DecidableEqDep__" as definition.
76 inline procedural "cic:/Coq/Logic/Eqdep_dec/trans_sym_eqT.con" as remark.
79 cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/eq_dec.var
83 cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/x.var
86 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu.con *****)
88 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu.con" "DecidableEqDep__" as definition.
90 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_constant.con *)
92 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_constant.con" "DecidableEqDep__" as definition.
94 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_inv.con *)
96 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/nu_inv.con" "DecidableEqDep__" as definition.
98 inline procedural "cic:/Coq/Logic/Eqdep_dec/nu_left_inv.con" as remark.
100 inline procedural "cic:/Coq/Logic/Eqdep_dec/eq_proofs_unicity.con" as theorem.
102 inline procedural "cic:/Coq/Logic/Eqdep_dec/K_dec.con" as theorem.
104 (*#* The corollary *)
106 (* UNAVAILABLE OBJECT: cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/proj.con ***)
108 inline procedural "cic:/Coq/Logic/Eqdep_dec/DecidableEqDep/proj.con" "DecidableEqDep__" as definition.
110 inline procedural "cic:/Coq/Logic/Eqdep_dec/inj_right_pair.con" as theorem.
116 (*#* We deduce the [K] axiom for (decidable) Set *)
118 inline procedural "cic:/Coq/Logic/Eqdep_dec/K_dec_set.con" as theorem.