:: The Fundamental Group of the Circle
:: by Artur Korni{\l}owicz
::
:: Copyright (c) 2005-2019 Association of Mizar Users

set o = ;

set I = the carrier of I;

set R = the carrier of R^1;

Lm1:
by INT_1:def 1;

Lm2: 0 in the carrier of I
by BORSUK_1:43;

then Lm3: c= the carrier of I
by ZFMISC_1:31;

Lm4:
by TARSKI:def 1;

Lm5: the carrier of = [: the carrier of I, the carrier of I:]
by BORSUK_1:def 2;

reconsider j0 = 0 , j1 = 1 as Point of I by ;

Lm6:
;

Lm7:
by TSEP_1:3;

Lm8: 1 - 0 <= 1
;

Lm9: (3 / 2) - (1 / 2) <= 1
;

registration
coherence
not INT.Group is finite
;
end;

theorem Th1: :: TOPALG_5:1
for a, r, s being Real st r <= s holds
for p being Point of () holds
( Ball (p,a) = [.r,s.] or Ball (p,a) = [.r,(p + a).[ or Ball (p,a) = ].(p - a),s.] or Ball (p,a) = ].(p - a),(p + a).[ )
proof end;

theorem Th2: :: TOPALG_5:2
for r, s being Real st r <= s holds
ex B being Basis of () st
( ex f being ManySortedSet of () st
for y being Point of () holds
( f . y = { (Ball (y,(1 / n))) where n is Nat : n <> 0 } & B = Union f ) & ( for X being Subset of () st X in B holds
X is connected ) )
proof end;

theorem Th3: :: TOPALG_5:3
for T being TopStruct
for A being Subset of T
for t being Point of T st t in A holds
Component_of (t,A) c= A
proof end;

registration
let T be TopSpace;
let A be open Subset of T;
cluster T | A -> open ;
coherence
T | A is open
by PRE_TOPC:8;
end;

theorem Th4: :: TOPALG_5:4
for T being TopSpace
for S being SubSpace of T
for A being Subset of T
for B being Subset of S st A = B holds
T | A = S | B
proof end;

theorem Th5: :: TOPALG_5:5
for S, T being TopSpace
for A, B being Subset of T
for C, D being Subset of S st TopStruct(# the carrier of S, the topology of S #) = TopStruct(# the carrier of T, the topology of T #) & A = C & B = D & A,B are_separated holds
C,D are_separated by TOPS_3:80;

theorem :: TOPALG_5:6
for S, T being TopSpace st TopStruct(# the carrier of S, the topology of S #) = TopStruct(# the carrier of T, the topology of T #) & S is connected holds
T is connected
proof end;

theorem Th7: :: TOPALG_5:7
for S, T being TopSpace
for A being Subset of S
for B being Subset of T st TopStruct(# the carrier of S, the topology of S #) = TopStruct(# the carrier of T, the topology of T #) & A = B & A is connected holds
B is connected
proof end;

theorem Th8: :: TOPALG_5:8
for S, T being non empty TopSpace
for s being Point of S
for t being Point of T
for A being a_neighborhood of s st TopStruct(# the carrier of S, the topology of S #) = TopStruct(# the carrier of T, the topology of T #) & s = t holds
A is a_neighborhood of t
proof end;

theorem :: TOPALG_5:9
for S, T being non empty TopSpace
for A being Subset of S
for B being Subset of T
for N being a_neighborhood of A st TopStruct(# the carrier of S, the topology of S #) = TopStruct(# the carrier of T, the topology of T #) & A = B holds
N is a_neighborhood of B
proof end;

theorem Th10: :: TOPALG_5:10
for S, T being non empty TopSpace
for A, B being Subset of T
for f being Function of S,T st f is being_homeomorphism & A is_a_component_of B holds
f " A is_a_component_of f " B
proof end;

theorem Th11: :: TOPALG_5:11
for T being non empty TopSpace
for S being non empty SubSpace of T
for A being non empty Subset of T
for B being non empty Subset of S st A = B & A is locally_connected holds
B is locally_connected by Th4;

theorem Th12: :: TOPALG_5:12
for S, T being non empty TopSpace st TopStruct(# the carrier of S, the topology of S #) = TopStruct(# the carrier of T, the topology of T #) & S is locally_connected holds
T is locally_connected
proof end;

theorem Th13: :: TOPALG_5:13
for T being non empty TopSpace holds
( T is locally_connected iff [#] T is locally_connected )
proof end;

Lm10: for T being non empty TopSpace
for S being non empty open SubSpace of T st T is locally_connected holds
TopStruct(# the carrier of S, the topology of S #) is locally_connected

proof end;

theorem Th14: :: TOPALG_5:14
for T being non empty TopSpace
for S being non empty open SubSpace of T st T is locally_connected holds
S is locally_connected
proof end;

theorem :: TOPALG_5:15
for S, T being non empty TopSpace st S,T are_homeomorphic & S is locally_connected holds
T is locally_connected
proof end;

theorem Th16: :: TOPALG_5:16
for T being non empty TopSpace st ex B being Basis of T st
for X being Subset of T st X in B holds
X is connected holds
T is locally_connected
proof end;

theorem Th17: :: TOPALG_5:17
for r, s being Real st r <= s holds
Closed-Interval-TSpace (r,s) is locally_connected
proof end;

registration
coherence by ;
end;

registration
let A be non empty open Subset of I;
coherence by Th14;
end;

definition
let r be Real;
func ExtendInt r -> Function of I,R^1 means :Def1: :: TOPALG_5:def 1
for x being Point of I holds it . x = r * x;
existence
ex b1 being Function of I,R^1 st
for x being Point of I holds b1 . x = r * x
proof end;
uniqueness
for b1, b2 being Function of I,R^1 st ( for x being Point of I holds b1 . x = r * x ) & ( for x being Point of I holds b2 . x = r * x ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines ExtendInt TOPALG_5:def 1 :
for r being Real
for b2 being Function of I,R^1 holds
( b2 = ExtendInt r iff for x being Point of I holds b2 . x = r * x );

registration
let r be Real;
coherence
proof end;
end;

definition
let r be Real;
:: original: ExtendInt
redefine func ExtendInt r -> Path of R^1 0, R^1 r;
coherence
ExtendInt r is Path of R^1 0, R^1 r
proof end;
end;

definition
let S, T, Y be non empty TopSpace;
let H be Function of [:S,T:],Y;
let t be Point of T;
func Prj1 (t,H) -> Function of S,Y means :Def2: :: TOPALG_5:def 2
for s being Point of S holds it . s = H . (s,t);
existence
ex b1 being Function of S,Y st
for s being Point of S holds b1 . s = H . (s,t)
proof end;
uniqueness
for b1, b2 being Function of S,Y st ( for s being Point of S holds b1 . s = H . (s,t) ) & ( for s being Point of S holds b2 . s = H . (s,t) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines Prj1 TOPALG_5:def 2 :
for S, T, Y being non empty TopSpace
for H being Function of [:S,T:],Y
for t being Point of T
for b6 being Function of S,Y holds
( b6 = Prj1 (t,H) iff for s being Point of S holds b6 . s = H . (s,t) );

definition
let S, T, Y be non empty TopSpace;
let H be Function of [:S,T:],Y;
let s be Point of S;
func Prj2 (s,H) -> Function of T,Y means :Def3: :: TOPALG_5:def 3
for t being Point of T holds it . t = H . (s,t);
existence
ex b1 being Function of T,Y st
for t being Point of T holds b1 . t = H . (s,t)
proof end;
uniqueness
for b1, b2 being Function of T,Y st ( for t being Point of T holds b1 . t = H . (s,t) ) & ( for t being Point of T holds b2 . t = H . (s,t) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 defines Prj2 TOPALG_5:def 3 :
for S, T, Y being non empty TopSpace
for H being Function of [:S,T:],Y
for s being Point of S
for b6 being Function of T,Y holds
( b6 = Prj2 (s,H) iff for t being Point of T holds b6 . t = H . (s,t) );

registration
let S, T, Y be non empty TopSpace;
let H be continuous Function of [:S,T:],Y;
let t be Point of T;
cluster Prj1 (t,H) -> continuous ;
coherence
Prj1 (t,H) is continuous
proof end;
end;

registration
let S, T, Y be non empty TopSpace;
let H be continuous Function of [:S,T:],Y;
let s be Point of S;
cluster Prj2 (s,H) -> continuous ;
coherence
Prj2 (s,H) is continuous
proof end;
end;

theorem :: TOPALG_5:18
for T being non empty TopSpace
for a, b being Point of T
for P, Q being Path of a,b
for H being Homotopy of P,Q
for t being Point of I st H is continuous holds
Prj1 (t,H) is continuous ;

theorem :: TOPALG_5:19
for T being non empty TopSpace
for a, b being Point of T
for P, Q being Path of a,b
for H being Homotopy of P,Q
for s being Point of I st H is continuous holds
Prj2 (s,H) is continuous ;

set TUC = Tunit_circle 2;

set cS1 = the carrier of ();

Lm11: now :: thesis: the carrier of () = Sphere (,1)
Tunit_circle 2 = Tcircle ((0. ()),1) by TOPREALB:def 7;
hence the carrier of () = Sphere (,1) by ; :: thesis: verum
end;

Lm12:
by ;

definition
let r be Real;
func cLoop r -> Function of I,() means :Def4: :: TOPALG_5:def 4
for x being Point of I holds it . x = |[(cos (((2 * PI) * r) * x)),(sin (((2 * PI) * r) * x))]|;
existence
ex b1 being Function of I,() st
for x being Point of I holds b1 . x = |[(cos (((2 * PI) * r) * x)),(sin (((2 * PI) * r) * x))]|
proof end;
uniqueness
for b1, b2 being Function of I,() st ( for x being Point of I holds b1 . x = |[(cos (((2 * PI) * r) * x)),(sin (((2 * PI) * r) * x))]| ) & ( for x being Point of I holds b2 . x = |[(cos (((2 * PI) * r) * x)),(sin (((2 * PI) * r) * x))]| ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines cLoop TOPALG_5:def 4 :
for r being Real
for b2 being Function of I,() holds
( b2 = cLoop r iff for x being Point of I holds b2 . x = |[(cos (((2 * PI) * r) * x)),(sin (((2 * PI) * r) * x))]| );

theorem Th20: :: TOPALG_5:20
for r being Real holds cLoop r = CircleMap * ()
proof end;

definition
let n be Integer;
:: original: cLoop
redefine func cLoop n -> Loop of c ;
coherence
cLoop n is Loop of c
proof end;
end;

Lm13: ex F being Subset-Family of () st
( F is Cover of () & F is open & ( for U being Subset of () st U in F holds
ex D being mutually-disjoint open Subset-Family of R^1 st
( union D = CircleMap " U & ( for d being Subset of R^1 st d in D holds
for f being Function of (R^1 | d),(() | U) st f = CircleMap | d holds
f is being_homeomorphism ) ) ) )

proof end;

Lm14:
by TEX_2:def 2;

Lm15: for r, s being Real
for F being Subset-Family of ()
for C being IntervalCover of F
for G being IntervalCoverPts of C st F is Cover of () & F is open & F is connected & r <= s holds
not G is empty

proof end;

theorem Th21: :: TOPALG_5:21
for UL being Subset-Family of () st UL is Cover of () & UL is open holds
for Y being non empty TopSpace
for F being continuous Function of ,()
for y being Point of Y ex T being non empty FinSequence of REAL st
( T . 1 = 0 & T . (len T) = 1 & T is increasing & ex N being open Subset of Y st
( y in N & ( for i being Nat st i in dom T & i + 1 in dom T holds
ex Ui being non empty Subset of () st
( Ui in UL & F .: [:N,[.(T . i),(T . (i + 1)).]:] c= Ui ) ) ) )
proof end;

theorem Th22: :: TOPALG_5:22
for Y being non empty TopSpace
for F being Function of ,()
for Ft being Function of [:Y,():],R^1 st F is continuous & Ft is continuous & F | [: the carrier of Y,:] = CircleMap * Ft holds
ex G being Function of ,R^1 st
( G is continuous & F = CircleMap * G & G | [: the carrier of Y,:] = Ft & ( for H being Function of ,R^1 st H is continuous & F = CircleMap * H & H | [: the carrier of Y,:] = Ft holds
G = H ) )
proof end;

theorem Th23: :: TOPALG_5:23
for x0, y0 being Point of ()
for xt being Point of R^1
for f being Path of x0,y0 st xt in CircleMap " {x0} holds
ex ft being Function of I,R^1 st
( ft . 0 = xt & f = CircleMap * ft & ft is continuous & ( for f1 being Function of I,R^1 st f1 is continuous & f = CircleMap * f1 & f1 . 0 = xt holds
ft = f1 ) )
proof end;

theorem Th24: :: TOPALG_5:24
for x0, y0 being Point of ()
for P, Q being Path of x0,y0
for F being Homotopy of P,Q
for xt being Point of R^1 st P,Q are_homotopic & xt in CircleMap " {x0} holds
ex yt being Point of R^1 ex Pt, Qt being Path of xt,yt ex Ft being Homotopy of Pt,Qt st
( Pt,Qt are_homotopic & F = CircleMap * Ft & yt in CircleMap " {y0} & ( for F1 being Homotopy of Pt,Qt st F = CircleMap * F1 holds
Ft = F1 ) )
proof end;

definition
func Ciso -> Function of INT.Group,(pi_1 ((),c)) means :Def5: :: TOPALG_5:def 5
for n being Integer holds it . n = Class ((EqRel ((),c)),());
existence
ex b1 being Function of INT.Group,(pi_1 ((),c)) st
for n being Integer holds b1 . n = Class ((EqRel ((),c)),())
proof end;
uniqueness
for b1, b2 being Function of INT.Group,(pi_1 ((),c)) st ( for n being Integer holds b1 . n = Class ((EqRel ((),c)),()) ) & ( for n being Integer holds b2 . n = Class ((EqRel ((),c)),()) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Ciso TOPALG_5:def 5 :
for b1 being Function of INT.Group,(pi_1 ((),c)) holds
( b1 = Ciso iff for n being Integer holds b1 . n = Class ((EqRel ((),c)),()) );

theorem Th25: :: TOPALG_5:25
for i being Integer
for f being Path of R^1 0, R^1 i holds Ciso . i = Class ((EqRel ((),c)),())
proof end;

registration
coherence
proof end;
end;

registration
coherence
( Ciso is one-to-one & Ciso is onto )
proof end;
end;

theorem :: TOPALG_5:26

Lm16: for r being positive Real
for o being Point of ()
for x being Point of (Tcircle (o,r)) holds INT.Group , pi_1 ((Tcircle (o,r)),x) are_isomorphic

proof end;

theorem Th27: :: TOPALG_5:27
for S being being_simple_closed_curve SubSpace of TOP-REAL 2
for x being Point of S holds INT.Group , pi_1 (S,x) are_isomorphic
proof end;

registration
let S be being_simple_closed_curve SubSpace of TOP-REAL 2;
let x be Point of S;
cluster FundamentalGroup (S,x) -> infinite ;
coherence
not pi_1 (S,x) is finite
proof end;
end;