3 include "topology/igft.ma".
5 ntheorem axiom_cond: âA:Ax.âa:A.âi:đ a.a â đ a i.
6 #A; #a; #i; @2 i; #x; #H; @; napply H;
9 nlemma hint_auto1 : âA,U,V. (âx.x â U â x â V) â cover_set cover A U V.
13 alias symbol "covers" (instance 1) = "covers".
14 alias symbol "covers" (instance 2) = "covers set".
15 alias symbol "covers" (instance 3) = "covers".
16 ntheorem transitivity: âA:Ax.âa:A.âU,V. a â U â U â V â a â V.
17 #A; #a; #U; #V; #aU; #UV;
20 ##| #c; #i; #HCU; #H; @2 i; nauto;
24 ndefinition emptyset: âA.Ί^A â ÎťA.{x | False}.
26 notation "â
" non associative with precedence 90 for @{ 'empty }.
27 interpretation "empty" 'empty = (emptyset ?).
29 naxiom EM : âA:Ax.âa:A.âi_star.(a â đ a i_star) ⨠( a â đ a i_star).
32 âA:Ax.âa:A. a â â
â âi. ÂŹ a â đ a i.
35 ##| #b; #i_star; #IH1; #IH2;
36 ncases (EM ⌠b i_star);
37 ##[##2: (* nauto; *) #W; @i_star; napply W;
43 ninductive eq1 (A : Type[0]) : Type[0] â CProp[0] â
46 notation "hvbox( a break âź b)" non associative with precedence 40
49 interpretation "eq between types" 'eqT a b = (eq1 a b).
51 ninductive unit : Type[0] â one : unit.
53 nrecord uAx : Type[1] â {
55 with_ : âa:uax_.đ a âź unit
58 ndefinition uax : uAx â Ax.
59 #A; @ (uax_ A) (Îťx.unit); #a; #_; napply (đ a ?); nlapply one; ncases (with_ A a); nauto;
62 ncoercion uax : âu:uAx. Ax â uax on _u : uAx to Ax.
68 @; ##[ @ A (Îť_.unit) (Îťa,x.S a); ##| #_; @; ##]
71 alias id "S" = "cic:/matita/ng/topology/igft/S.fix(0,0,1)".
72 unification hint 0 â ;
74 (* -------------- *) â˘
79 âA:uAx.âa:A. a â â
â ÂŹ a â đ a ?. ##[ (* bug *) ##2: nnormalize; napply one; ##]
82 ##| #b; #i_star; #IH1; #IH2; #H3; nlapply (IH2 ⌠H3); #H4; nauto;
86 ndefinition Z : Ί^axs â { x | x â â
}.
88 ntheorem cover_monotone: âA:Ax.âa:A.âU,V.U â V â a â U â a â V.
89 #A; #a; #U; #V; #HUV; #H; nelim H;
91 ##| #b; #i; #HCU; #W; @2 i; #x; nauto; ##]
94 ntheorem th3_1: ÂŹâa:axs.Z â S a ⧠S a â Z.
97 nlapply (axiom_cond ⌠a one); #AxCon; nchange in AxCon with (a â S a);
98 (* nauto; *) napply (cover_monotone ⌠AxCon); nassumption; ##] #H;
99 ncut (a â â
); ##[ napply (transitivity ⌠H); #x; #E; napply E; ##] #H1;
100 ncut (ÂŹ a â S a); ##[ napply (col2_4 ⌠H1); ##] #H2;
101 ncut (a â S a); ##[ napply ZSa; napply H1; ##] #H3;
105 include "nat/nat.ma".
107 naxiom phi : nat â nat â nat.
109 notation > "Ď" non associative with precedence 90 for @{ 'phi }.
110 interpretation "phi" 'phi = phi.
112 notation < "Ď a i" non associative with precedence 90 for @{ 'phi2 $a $i}.
113 interpretation "phi2" 'phi2 a i = (phi a i).
114 notation < "Ď a" non associative with precedence 90 for @{ 'phi1 $a }.
115 interpretation "phi2" 'phi1 a = (phi a).
117 ndefinition caxs : uAx.
118 @; ##[ @ nat (Îť_.unit); #a; #_; napply { x | Ď a x = O } ##| #_; @; ##]
122 alias id "S" = "cic:/matita/ng/topology/igft/S.fix(0,0,1)".
123 unification hint 0 â ;
125 (* -------------- *) â˘
128 naxiom h : nat â nat.
130 naxiom Ph : âx.h x = O â x â â
.
132 ninductive eq2 (A : Type[1]) (a : A) : A â CProp[0] â
135 interpretation "eq2" 'eq T a b = (eq2 T a b).
137 ntheorem th_ch3: ÂŹâa:caxs.âx.Ď a x = h x.
139 ncut ((đ a one) â { x | x â â
}); (* bug *)
140 nchange in xx with { x | h x
157 ntheorem cantor: âa:axs. ÂŹ (Z â R a ⧠R a â Z).
159 ncut (a â R a); ##[ @2; ##[ napply one; ##] #x; #H; @; napply H; ##] #H1;
160 ncut (a â â
); ##[
161 napply (cover_trans ⌠H1);
162 #x; #H; nlapply (RaZ ⌠H); #ABS; napply ABS; ##] #H2;
163 ncut (a â R a); ##[ napply ZRa; napply H2; ##] #H3;
166 ##| nnormalize; nauto. ##] (* se lo lancio su entrambi fallisce di width *)
169 ninductive deduct (A : nAx) (U : Ί^A) : A â CProp[0] â
170 | drefl : âa.a â U â deduct A U a
171 | dcut : âa.âi:đ a. (ây:đ a i.deduct A U (đ a i y)) â deduct A U a.
173 notation " a ⢠b " non associative with precedence 45 for @{ 'deduct $a $b }.
174 interpretation "deduct" 'deduct a b = (deduct ? b a).
176 ntheorem th2_3_1 : âA:nAx.âa:A.âi:đ a. a ⢠đđŚ[đ a i].
178 ncut (ây:đ a i.đ a i y ⢠đđŚ[đ a i]); ##[ #y; @; @y; @; ##] #H1;
179 napply (dcut ⌠i); nassumption;
183 âA:nAx.âa:A.âi:đ a.âU,V. a ⢠U â (âu.u â U â u ⢠V) â a ⢠V.
184 #A; #a; #i; #U; #V; #aU; #xUxV;
187 ##| #b; #i; #dU; #dV; @2 i; nassumption;
193 (âa:A.âi_star.(ây:đ a i_star.đ a i_star y = a) ⨠(ây:đ a i_star.đ a i_star y = a)) â
194 âa:A. a â â
â âi:đ a. ÂŹ a \in Z
195 #A; #EM; #a; #H; nelim H;
197 ##| #b; #i_star; #IH1; #IH2;
198 ncases (EM b i_star);
199 ##[##2: #W; @i_star; napply W;
200 ##| *; #y_star; #E; nlapply (IH2 y_star); nrewrite > E; #OK; napply OK;
205 ninductive eq1 (A : Type[0]) : Type[0] â CProp[0] â
208 notation "hvbox( a break âź b)" non associative with precedence 40
211 interpretation "eq between types" 'eqT a b = (eq1 a b).
213 nrecord uAx : Type[1] â {
215 with_ : âa:uax_.đ a âź unit
218 ndefinition uax : uAx â Ax.
219 *; #A; #E; @ A (Îťx.unit); #a; ncases (E a);
220 ##[ #i; napply (đ a i);
221 ##| #i; nnormalize; #j; napply (đ a i j);
225 ncoercion uax : âu:unAx. nAx â uax on _u : unAx to nAx.
228 nlemma cor_2_5 : âA:unAx.âa:A.âi.a ⢠â
â ÂŹ(a â đđŚ[đ a i]).
229 #A; #a; #i; #H; nelim H in i;
231 ##| #a; #i; #IH1; #IH2;