]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/procedural/Coq/Logic/Eqdep.mma
4efee3045d893dd5134145fac4cad55fa3cbe70a
[helm.git] / helm / software / matita / contribs / procedural / Coq / Logic / Eqdep.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 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team    *)
22
23 (* <O___,, *        INRIA-Rocquencourt  &  LRI-CNRS-Orsay              *)
24
25 (*   \VV/  *************************************************************)
26
27 (*    //   *      This file is distributed under the terms of the      *)
28
29 (*         *       GNU Lesser General Public License Version 2.1       *)
30
31 (*#**********************************************************************)
32
33 (*i $Id: Eqdep.v,v 1.10 2004/01/27 14:37:30 herbelin Exp $ i*)
34
35 (*#* This file defines dependent equality and shows its equivalence with
36     equality on dependent pairs (inhabiting sigma-types). It axiomatizes
37     the invariance by substitution of reflexive equality proofs and 
38     shows the equivalence between the 4 following statements
39
40     - Invariance by Substitution of Reflexive Equality Proofs.
41     - Injectivity of Dependent Equality
42     - Uniqueness of Identity Proofs
43     - Uniqueness of Reflexive Identity Proofs
44     - Streicher's Axiom K
45
46   These statements are independent of the calculus of constructions [2].
47
48   References:
49
50   [1] T. Streicher, Semantical Investigations into Intensional Type Theory,
51       Habilitationsschrift, LMU München, 1993.
52   [2] M. Hofmann, T. Streicher, The groupoid interpretation of type theory,
53       Proceedings of the meeting Twenty-five years of constructive
54       type theory, Venice, Oxford University Press, 1998
55 *)
56
57 (* UNEXPORTED
58 Section Dependent_Equality
59 *)
60
61 (* UNEXPORTED
62 cic:/Coq/Logic/Eqdep/Dependent_Equality/U.var
63 *)
64
65 (* UNEXPORTED
66 cic:/Coq/Logic/Eqdep/Dependent_Equality/P.var
67 *)
68
69 (*#* Dependent equality *)
70
71 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep.ind".
72
73 (* UNEXPORTED
74 Hint Constructors eq_dep: core v62.
75 *)
76
77 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep_sym.con" as lemma.
78
79 (* UNEXPORTED
80 Hint Immediate eq_dep_sym: core v62.
81 *)
82
83 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep_trans.con" as lemma.
84
85 inline procedural "cic:/Coq/Logic/Eqdep/eq_indd.con" as theorem.
86
87 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep1.ind".
88
89 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep1_dep.con" as lemma.
90
91 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep_dep1.con" as lemma.
92
93 (*#* Invariance by Substitution of Reflexive Equality Proofs *)
94
95 inline procedural "cic:/Coq/Logic/Eqdep/eq_rect_eq.con".
96
97 (*#* Injectivity of Dependent Equality is a consequence of *)
98
99 (*#* Invariance by Substitution of Reflexive Equality Proof *)
100
101 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep1_eq.con" as lemma.
102
103 inline procedural "cic:/Coq/Logic/Eqdep/eq_dep_eq.con" as lemma.
104
105 (* UNEXPORTED
106 End Dependent_Equality
107 *)
108
109 (*#* Uniqueness of Identity Proofs (UIP) is a consequence of *)
110
111 (*#* Injectivity of Dependent Equality *)
112
113 inline procedural "cic:/Coq/Logic/Eqdep/UIP.con" as lemma.
114
115 (*#* Uniqueness of Reflexive Identity Proofs is a direct instance of UIP *)
116
117 inline procedural "cic:/Coq/Logic/Eqdep/UIP_refl.con" as lemma.
118
119 (*#* Streicher axiom K is a direct consequence of Uniqueness of
120     Reflexive Identity Proofs *)
121
122 inline procedural "cic:/Coq/Logic/Eqdep/Streicher_K.con" as lemma.
123
124 (*#* We finally recover eq_rec_eq (alternatively eq_rect_eq) from K *)
125
126 inline procedural "cic:/Coq/Logic/Eqdep/eq_rec_eq.con" as lemma.
127
128 (*#* Dependent equality is equivalent to equality on dependent pairs *)
129
130 inline procedural "cic:/Coq/Logic/Eqdep/equiv_eqex_eqdep.con" as lemma.
131
132 (*#* UIP implies the injectivity of equality on dependent pairs *)
133
134 inline procedural "cic:/Coq/Logic/Eqdep/inj_pair2.con" as lemma.
135
136 (*#* UIP implies the injectivity of equality on dependent pairs *)
137
138 inline procedural "cic:/Coq/Logic/Eqdep/inj_pairT2.con" as lemma.
139
140 (*#* The main results to be exported *)
141
142 (* UNEXPORTED
143 Hint Resolve eq_dep_intro eq_dep_eq: core v62.
144 *)
145
146 (* UNEXPORTED
147 Hint Immediate eq_dep_sym: core v62.
148 *)
149
150 (* UNEXPORTED
151 Hint Resolve inj_pair2 inj_pairT2: core.
152 *)
153