]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/nlibrary/topology/cantor.ma
6ae8d36ad299078b76670460b6b3a0a16016faf3
[helm.git] / helm / software / matita / nlibrary / topology / cantor.ma
1
2
3 include "topology/igft.ma".
4
5 ntheorem axiom_cond: âˆ€A:Ax.∀a:A.∀i:𝐈 a.a â—ƒ đ‚ a i.
6 #A; #a; #i; @2 i; #x; #H; @; napply H;
7 nqed.
8
9 nlemma hint_auto1 : âˆ€A,U,V. (∀x.x âˆˆ U â†’ x â—ƒ V) â†’ cover_set cover A U V.
10 nnormalize; nauto.
11 nqed.
12
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;
18 nelim aU;
19 ##[ #c; #H; nauto; 
20 ##| #c; #i; #HCU; #H; @2 i; nauto; 
21 ##]
22 nqed.
23
24 ndefinition emptyset: âˆ€A.Ί^A â‰ ÎťA.{x | False}.
25
26 notation "∅" non associative with precedence 90 for @{ 'empty }.
27 interpretation "empty" 'empty = (emptyset ?).
28
29 naxiom EM : âˆ€A:Ax.∀a:A.∀i_star.(a âˆˆ đ‚ a i_star) âˆ¨ ÂŹ( a âˆˆ đ‚ a i_star).
30
31 alias symbol "covers" = "covers".
32 ntheorem th2_3 :
33   âˆ€A:Ax.∀a:A. a â—ƒ âˆ… â†’ âˆƒi. ÂŹ a âˆˆ đ‚ a i.
34 #A; #a; #H; nelim H;
35 ##[ #n; *;
36 ##| #b; #i_star; #IH1; #IH2;
37     ncases (EM â€Ś b i_star);
38     ##[##2: (* nauto; *) #W; @i_star; napply W;
39     ##| nauto;
40     ##]
41 ##] 
42 nqed.
43
44 ninductive eq1 (A : Type[0]) : Type[0] â†’ CProp[0] â‰ 
45 | refl1 : eq1 A A.
46
47 notation "hvbox( a break âˆź b)" non associative with precedence 40 
48 for @{ 'eqT $a $b }.
49
50 interpretation "eq between types" 'eqT a b = (eq1 a b).
51
52 ninductive unit : Type[0] â‰ one : unit.
53
54 nrecord uAx : Type[1] â‰ {
55   uax_ : Ax;
56   with_ : âˆ€a:uax_.𝐈 a âˆź unit
57 }.
58
59 ndefinition uax : uAx â†’ Ax.
60 #A; @ (uax_ A) (Îťx.unit); #a; #_; napply (𝐂 a ?);  nlapply one; ncases (with_ A a); nauto; 
61 nqed.
62
63 ncoercion uax : âˆ€u:uAx. Ax â‰ uax on _u : uAx to Ax.
64
65 naxiom A: Type[0].
66 naxiom S: A â†’ ÎŠ^A.
67
68 ndefinition axs: uAx.
69 @; ##[ @ A (Îť_.unit) (Îťa,x.S a); ##| #_; @; ##]
70 nqed.
71  
72 alias id "S" = "cic:/matita/ng/topology/igft/S.fix(0,0,1)".
73 unification hint 0 â‰” ;
74          x â‰Ÿ axs  
75   (* -------------- *) âŠ˘
76          S x â‰Ą A. 
77
78
79 ntheorem col2_4 :
80   âˆ€A:uAx.∀a:A. a â—ƒ âˆ… â†’ ÂŹ a âˆˆ đ‚ a ?. ##[ (* bug *) ##2: nnormalize; napply one; ##]
81 #A; #a; #H; nelim H;
82 ##[ #n; *;
83 ##| #b; #i_star; #IH1; #IH2; #H3; nlapply (IH2 â€Ś H3); #H4; nauto;
84 ##] 
85 nqed.
86
87 ndefinition Z : ÎŠ^axs â‰ { x | x â—ƒ âˆ… }.
88
89 ntheorem cover_monotone: âˆ€A:Ax.∀a:A.∀U,V.U âŠ† V â†’ a â—ƒ U â†’ a â—ƒ V.
90 #A; #a; #U; #V; #HUV; #H; nelim H;
91 ##[ nauto;
92 ##| #b; #i; #HCU; #W; @2 i; #x; nauto; ##]
93 nqed.
94
95 ntheorem th3_1: ÂŹâˆƒa:axs.Z âŠ† S a âˆ§ S a âŠ† Z.
96 *; #a; *; #ZSa; #SaZ; 
97 ncut (a â—ƒ Z); ##[
98   nlapply (axiom_cond â€Ś a one); #AxCon; nchange in AxCon with (a â—ƒ S a);
99   (* nauto; *) napply (cover_monotone â€Ś AxCon); nassumption; ##] #H; 
100 ncut (a â—ƒ âˆ…); ##[ napply (transitivity â€Ś H); #x; #E; napply E; ##] #H1;
101 ncut (ÂŹ a âˆˆ S a); ##[ napply (col2_4 â€Ś H1); ##] #H2;
102 ncut (a âˆˆ S a); ##[ napply ZSa; napply H1; ##] #H3;
103 nauto;
104 nqed.
105
106 include "nat/nat.ma".
107
108 naxiom phi : nat â†’ nat â†’ nat.
109
110 notation > "ϕ" non associative with precedence 90 for @{ 'phi }.
111 interpretation "phi" 'phi = phi.
112  
113 notation < "ϕ a i" non associative with precedence 90 for @{ 'phi2 $a $i}.
114 interpretation "phi2" 'phi2 a i = (phi a i). 
115 notation < "ϕ a" non associative with precedence 90 for @{ 'phi1 $a }.
116 interpretation "phi2" 'phi1 a = (phi a). 
117
118 ndefinition caxs : uAx. 
119 @; ##[ @ nat (Îť_.unit); #a; #_; napply { x | Ď• a x = O } ##| #_; @; ##]
120 nqed.
121
122
123 alias id "S" = "cic:/matita/ng/topology/igft/S.fix(0,0,1)".
124 unification hint 0 â‰” ;
125          x â‰Ÿ caxs  
126   (* -------------- *) âŠ˘
127          S x â‰Ą nat. 
128
129 naxiom h : nat â†’ nat. 
130
131 alias symbol "eq" = "leibnitz's equality".
132 alias symbol "eq" = "setoid1 eq".
133 alias symbol "covers" = "covers".
134 alias symbol "eq" = "leibnitz's equality".
135 naxiom Ph :  âˆ€x.h x = O \liff  x â—ƒ âˆ….
136
137 nlemma replace_char:
138   âˆ€A:Ax.∀U,V.U âŠ† V â†’ V âŠ† U â†’ âˆ€a:A.a â—ƒ U â†’ a â—ƒ V.
139 #A; #U; #V;  #a; #H1; #H2; #E; nelim E;
140 ##[ #b; #Hb; @; nauto;
141 ##| #b; #i; #H3; #H4; @2 i; #c; #Hc; nauto; ##]
142 nqed.
143
144 ntheorem th_ch3: ÂŹâˆƒa:caxs.∀x.ϕ a x = h x.
145 *; #a; #H;
146 ncut (a â—ƒ { x | x â—ƒ âˆ…}); ##[
147   napply (replace_char â€Ś { x | h x = O }); ##[ ##1,2: #x; ncases (Ph x);
148      (* nauto; *) #H1; #H2; #H3; nauto; (* ??? *) ##]
149   napply (replace_char â€Ś { x | Ď• a x = O }); ##[##1,2: #x; nrewrite > (H x);
150      (* nauto; *) #E; napply E; ##]
151   napply (axiom_cond â€Ś a one); ##] #H1;
152 ncut (a â—ƒ âˆ…); ##[ napply (transitivity â€Ś H1); #x; nauto; ##] #H2;
153 nlapply (col2_4 â€ŚH2); #H3;
154 ncut (a âˆˆ đ‚ a one); ##[
155   nnormalize; ncases (Ph a); nrewrite > (H a); nauto; ##] #H4;
156 nauto;
157 nqed.
158
159