:: Fundamental Group of $n$-sphere for $n \geq 2$ :: by Marco Riccardi and Artur Korni{\l}owicz :: :: Received November 3, 2011 :: Copyright (c) 2011-2021 Association of Mizar Users :: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland). :: This code can be distributed under the GNU General Public Licence :: version 3.0 or later, or the Creative Commons Attribution-ShareAlike :: License version 3.0 or later, subject to the binding interpretation :: detailed in file COPYING.interpretation. :: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these :: licenses, or see http://www.gnu.org/licenses/gpl.html and :: http://creativecommons.org/licenses/by-sa/3.0/. environ vocabularies PRE_TOPC, FUNCT_1, EUCLID, RELAT_1, ARYTM_1, BORSUK_2, GRAPH_1, ALGSTR_1, WAYBEL20, EQREL_1, NAT_1, XBOOLE_0, ARYTM_3, TOPALG_1, TOPS_2, TOPREALB, T_0TOPSP, STRUCT_0, BORSUK_1, FUNCOP_1, SUBSET_1, TOPALG_3, TARSKI, XREAL_0, FUNCT_2, XXREAL_0, ZFMISC_1, NUMBERS, RCOMP_1, ORDINAL2, CARD_1, XXREAL_1, CONNSP_2, TOPMETR, MFOLD_2, PARTFUN1, METRIC_1, CONVEX1, INCSP_1, RLTOPSP1, RVSUM_1, REAL_1, COMPLEX1, FINSEQ_1, MEASURE5, XXREAL_2, FINSET_1, FINSEQ_2, MFOLD_1, VALUED_0, SERIES_1, CARD_3, ORDINAL4, MEMBERED, SUPINF_2, TREAL_1, TOPREAL1, FUNCT_4, TOPALG_6, BROUWER, XCMPLX_0; notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, EQREL_1, RELAT_1, COMPLEX1, FUNCOP_1, FUNCT_1, RELSET_1, PARTFUN1, FUNCT_2, RVSUM_1, REAL_1, BINOP_1, ORDINAL1, NUMBERS, XXREAL_0, XREAL_0, XCMPLX_0, NAT_1, FINSET_1, STRUCT_0, PRE_TOPC, TOPS_2, BORSUK_1, CONNSP_2, TOPMETR, EUCLID, BORSUK_2, TOPALG_1, TOPALG_3, TOPREALB, VALUED_0, METRIC_1, TOPREAL9, TOPALG_2, RLTOPSP1, COMPTS_1, FINSEQ_1, TBSP_1, FINSEQ_2, METRIZTS, RLVECT_1, XXREAL_1, XXREAL_2, NAT_D, BORSUK_6, MEMBERED, RCOMP_1, BROUWER, MFOLD_0, MFOLD_1, MFOLD_2, TOPREAL1, FUNCT_4; constructors BORSUK_6, BORSUK_3, TOPALG_3, SEQ_4, TOPREAL9, TOPREALB, MFOLD_2, BINOP_2, FUNCSDOM, CONVEX1, MONOID_0, COMPTS_1, TBSP_1, BROUWER, MFOLD_0, MFOLD_1, METRIZTS, NAT_D, TREAL_1, TOPREAL1, WAYBEL23, REAL_1, NUMBERS; registrations RELSET_1, XXREAL_0, XREAL_0, MEMBERED, STRUCT_0, BORSUK_1, EUCLID, BORSUK_2, TOPALG_1, PRE_TOPC, ZFMISC_1, TOPGRP_1, TOPMETR, RCOMP_3, XXREAL_2, TEX_1, TOPALG_3, FUNCT_2, FUNCT_1, FUNCOP_1, MFOLD_2, XBOOLE_0, RELAT_1, PARTFUN1, NAT_1, MONOID_0, VALUED_0, FINSET_1, FINSEQ_1, FINSEQ_2, NUMBERS, TOPALG_2, TOPREAL9, TBSP_1, MFOLD_1, BORSUK_3, TOPREAL6, TOPREALB, ORDINAL1, CARD_1; requirements REAL, ARITHM, BOOLE, SUBSET, NUMERALS; begin :: Preliminaries reserve T,U for non empty TopSpace; reserve t for Point of T; reserve n for Nat; registration let S be TopSpace, T be non empty TopSpace; cluster constant -> continuous for Function of S,T; end; theorem :: TOPALG_6:1 L[01](0,1,0,1) = id Closed-Interval-TSpace(0,1); theorem :: TOPALG_6:2 for r1,r2,r3,r4,r5,r6 being Real st r1 < r2 & r3 <= r4 & r5 < r6 holds L[01](r1,r2,r3,r4)*L[01](r5,r6,r1,r2) = L[01](r5,r6,r3,r4); registration let n be positive Nat; cluster TOP-REAL n -> infinite; cluster n-locally_euclidean -> infinite for non empty TopSpace; end; theorem :: TOPALG_6:3 for p being Point of TOP-REAL n st p in Sphere(0.TOP-REAL n,1) holds -p in Sphere(0.TOP-REAL n,1) \ {p}; theorem :: TOPALG_6:4 for T being non empty TopStruct, t1,t2 being Point of T for p being Path of t1,t2 holds inf dom p = 0 & sup dom p = 1; theorem :: TOPALG_6:5 for C1,C2 being constant Loop of t holds C1, C2 are_homotopic; theorem :: TOPALG_6:6 for S being non empty SubSpace of T, t1,t2 being Point of T, s1,s2 being Point of S, A,B being Path of t1,t2, C,D being Path of s1,s2 st s1,s2 are_connected & t1,t2 are_connected & A = C & B = D & C,D are_homotopic holds A,B are_homotopic; theorem :: TOPALG_6:7 for S being non empty SubSpace of T, t1,t2 being Point of T, s1,s2 being Point of S, A,B being Path of t1,t2, C,D being Path of s1,s2 st s1,s2 are_connected & t1,t2 are_connected & A = C & B = D & Class(EqRel(S,s1,s2),C) = Class(EqRel(S,s1,s2),D) holds Class(EqRel(T,t1,t2),A) = Class(EqRel(T,t1,t2),B); theorem :: TOPALG_6:8 for T being trivial non empty TopSpace for t being Point of T, L being Loop of t holds the carrier of pi_1(T,t) = { Class(EqRel(T,t),L) }; theorem :: TOPALG_6:9 for p being Point of TOP-REAL n, S being Subset of TOP-REAL n st n >= 2 & S = ([#]TOP-REAL n) \ {p} holds (TOP-REAL n) | S is pathwise_connected; theorem :: TOPALG_6:10 for S being non empty Subset of T st n >= 2 & S = ([#]T) \ {t} & TOP-REAL n, T are_homeomorphic holds T | S is pathwise_connected; registration let n be Element of NAT; let p,q be Point of TOP-REAL n; cluster TPlane(p,q) -> convex; end; begin :: Fundamental groups definition let T; attr T is having_trivial_Fundamental_Group means :: TOPALG_6:def 1 for t being Point of T holds pi_1(T,t) is trivial; end; definition let T; attr T is simply_connected means :: TOPALG_6:def 2 T is having_trivial_Fundamental_Group pathwise_connected; end; registration cluster simply_connected -> having_trivial_Fundamental_Group pathwise_connected for non empty TopSpace; cluster having_trivial_Fundamental_Group pathwise_connected -> simply_connected for non empty TopSpace; end; theorem :: TOPALG_6:11 T is having_trivial_Fundamental_Group implies for t being Point of T, P,Q being Loop of t holds P,Q are_homotopic; registration let n be Nat; cluster TOP-REAL n -> having_trivial_Fundamental_Group; end; registration cluster trivial -> having_trivial_Fundamental_Group for non empty TopSpace; end; theorem :: TOPALG_6:12 T is simply_connected iff for t1,t2 being Point of T holds t1,t2 are_connected & for P, Q being Path of t1,t2 holds Class(EqRel(T,t1,t2),P) = Class(EqRel(T,t1,t2),Q); registration let T be having_trivial_Fundamental_Group non empty TopSpace; let t be Point of T; cluster pi_1(T,t) -> trivial; end; theorem :: TOPALG_6:13 for S, T being non empty TopSpace st S,T are_homeomorphic holds S is having_trivial_Fundamental_Group implies T is having_trivial_Fundamental_Group; theorem :: TOPALG_6:14 for S, T being non empty TopSpace st S,T are_homeomorphic holds S is simply_connected implies T is simply_connected; theorem :: TOPALG_6:15 for T being having_trivial_Fundamental_Group non empty TopSpace, t being Point of T, P1,P2 being Loop of t holds P1,P2 are_homotopic; definition let T, t; let l be Loop of t; attr l is nullhomotopic means :: TOPALG_6:def 3 ex c being constant Loop of t st l,c are_homotopic; end; registration let T, t; cluster constant -> nullhomotopic for Loop of t; end; registration let T, t; cluster constant for Loop of t; end; theorem :: TOPALG_6:16 for f being Loop of t, g being continuous Function of T,U st f is nullhomotopic holds g*f is nullhomotopic; registration let T, U be non empty TopSpace, t be Point of T, f be nullhomotopic Loop of t, g be continuous Function of T,U; cluster g*f -> nullhomotopic for Loop of g.t; end; registration let T be having_trivial_Fundamental_Group non empty TopSpace; let t be Point of T; cluster -> nullhomotopic for Loop of t; end; theorem :: TOPALG_6:17 (for t being Point of T, f being Loop of t holds f is nullhomotopic) implies T is having_trivial_Fundamental_Group; registration let n be Element of NAT; let p,q be Point of TOP-REAL n; cluster TPlane(p,q) -> having_trivial_Fundamental_Group; end; theorem :: TOPALG_6:18 for S being non empty SubSpace of T, s being Point of S, f being Loop of t, g being Loop of s st t = s & f = g & g is nullhomotopic holds f is nullhomotopic; begin :: Curves reserve T for TopStruct; reserve f for PartFunc of R^1, T; definition let T,f; attr f is parametrized-curve means :: TOPALG_6:def 4 dom f is interval Subset of REAL & ex S being SubSpace of R^1, g being Function of S, T st f = g & S = R^1|dom f & g is continuous; end; registration let T; cluster parametrized-curve for PartFunc of R^1, T; end; theorem :: TOPALG_6:19 {} is parametrized-curve PartFunc of R^1, T; definition let T; func Curves T -> Subset of PFuncs(REAL, [#]T) equals :: TOPALG_6:def 5 {f where f is Element of PFuncs(REAL, [#]T) : f is parametrized-curve PartFunc of R^1, T}; end; registration let T; cluster Curves T -> non empty; end; definition let T; mode Curve of T is Element of Curves T; end; reserve c for Curve of T; theorem :: TOPALG_6:20 for f being parametrized-curve PartFunc of R^1, T holds f is Curve of T; theorem :: TOPALG_6:21 {} is Curve of T; theorem :: TOPALG_6:22 for t1,t2 being Point of T for p being Path of t1,t2 st t1,t2 are_connected holds p is Curve of T; theorem :: TOPALG_6:23 c is parametrized-curve PartFunc of R^1, T; theorem :: TOPALG_6:24 dom c c= REAL & rng c c= [#]T; registration let T,c; cluster dom c -> real-membered; end; definition let T,c; attr c is with_first_point means :: TOPALG_6:def 6 dom c is left_end; attr c is with_last_point means :: TOPALG_6:def 7 dom c is right_end; end; definition let T,c; attr c is with_endpoints means :: TOPALG_6:def 8 c is with_first_point with_last_point; end; registration let T; cluster with_first_point with_last_point -> with_endpoints for Curve of T; cluster with_endpoints -> with_first_point with_last_point for Curve of T; end; reserve T for non empty TopStruct; registration let T; cluster with_endpoints for Curve of T; end; registration let T; let c be with_first_point Curve of T; cluster dom c -> non empty; cluster inf dom c -> real; end; registration let T; let c be with_last_point Curve of T; cluster dom c -> non empty; cluster sup dom c -> real; end; registration let T; cluster with_first_point -> non empty for Curve of T; cluster with_last_point -> non empty for Curve of T; end; definition let T; let c be with_first_point Curve of T; func the_first_point_of c -> Point of T equals :: TOPALG_6:def 9 c.(inf dom c); end; definition let T; let c be with_last_point Curve of T; func the_last_point_of c -> Point of T equals :: TOPALG_6:def 10 c.(sup dom c); end; theorem :: TOPALG_6:25 for t1,t2 being Point of T for p being Path of t1,t2 st t1,t2 are_connected holds p is with_endpoints Curve of T; theorem :: TOPALG_6:26 for c being Curve of T for r1,r2 being Real holds c | [.r1, r2.] is Curve of T; theorem :: TOPALG_6:27 for c being with_endpoints Curve of T holds dom c = [.inf dom c, sup dom c.]; theorem :: TOPALG_6:28 for c being with_endpoints Curve of T st dom c = [.0,1.] holds c is Path of the_first_point_of c,the_last_point_of c; theorem :: TOPALG_6:29 for c being with_endpoints Curve of T holds c*L[01](0,1,inf dom c,sup dom c) is Path of the_first_point_of c,the_last_point_of c; theorem :: TOPALG_6:30 for c being with_endpoints Curve of T, t1,t2 being Point of T st c*L[01](0,1,inf dom c,sup dom c) is Path of t1,t2 & t1,t2 are_connected holds t1 = the_first_point_of c & t2 = the_last_point_of c; theorem :: TOPALG_6:31 for c being with_endpoints Curve of T holds the_first_point_of c in rng c & the_last_point_of c in rng c; theorem :: TOPALG_6:32 for r1,r2 being Real for t1,t2 being Point of T for p1 being Path of t1,t2 st t1,t2 are_connected & r1 < r2 holds p1*L[01](r1,r2,0,1) is with_endpoints Curve of T; theorem :: TOPALG_6:33 for c being with_endpoints Curve of T holds the_first_point_of c, the_last_point_of c are_connected; definition let T be non empty TopStruct; let c1,c2 be with_endpoints Curve of T; pred c1,c2 are_homotopic means :: TOPALG_6:def 11 ex a,b being Point of T, p1,p2 being Path of a,b st p1 = c1*L[01](0,1,inf dom c1,sup dom c1) & p2 = c2*L[01](0,1,inf dom c2,sup dom c2) & p1,p2 are_homotopic; symmetry; end; definition let T be non empty TopSpace; let c1,c2 be with_endpoints Curve of T; redefine pred c1,c2 are_homotopic; reflexivity; symmetry; end; theorem :: TOPALG_6:34 for T being non empty TopStruct, c1,c2 being with_endpoints Curve of T, a,b being Point of T, p1,p2 being Path of a,b st c1 = p1 & c2 = p2 & a,b are_connected holds c1,c2 are_homotopic iff p1,p2 are_homotopic; theorem :: TOPALG_6:35 for c1,c2 being with_endpoints Curve of T st c1, c2 are_homotopic holds the_first_point_of c1 = the_first_point_of c2 & the_last_point_of c1 = the_last_point_of c2; theorem :: TOPALG_6:36 for T being non empty TopSpace for c1,c2 being with_endpoints Curve of T for S being Subset of R^1 st dom c1 = dom c2 & S = dom c1 holds c1,c2 are_homotopic iff ex f being Function of [:R^1|S,I[01]:], T, a,b being Point of T st f is continuous & (for t being Point of R^1|S holds f.(t,0) = c1.t & f.(t,1) = c2.t) & (for t being Point of I[01] holds f.(inf S,t) = a & f.(sup S,t) = b); definition let T be TopStruct; let c1, c2 be Curve of T; func c1 + c2 -> Curve of T equals :: TOPALG_6:def 12 c1 \/ c2 if c1 \/ c2 is Curve of T otherwise {}; end; theorem :: TOPALG_6:37 for c being with_endpoints Curve of T for r being Real holds ex c1,c2 being Element of Curves T st c = c1 + c2 & c1 = c | [.inf dom c, r.] & c2 = c | [.r, sup dom c.]; theorem :: TOPALG_6:38 for T being non empty TopSpace for c1,c2 being with_endpoints Curve of T st sup dom c1 = inf dom c2 & the_last_point_of c1 = the_first_point_of c2 holds c1 + c2 is with_endpoints & dom(c1 + c2) = [.inf dom c1, sup dom c2.] & (c1+c2).inf dom c1 = the_first_point_of c1 & (c1+c2).sup dom c2 = the_last_point_of c2; theorem :: TOPALG_6:39 for T being non empty TopSpace for c1,c2,c3,c4,c5,c6 being with_endpoints Curve of T st c1,c2 are_homotopic & dom c1 = dom c2 & c3,c4 are_homotopic & dom c3 = dom c4 & c5 = c1 + c3 & c6 = c2 + c4 & the_last_point_of c1 = the_first_point_of c3 & sup dom c1 = inf dom c3 holds c5,c6 are_homotopic; definition let T be TopStruct; let f be FinSequence of Curves T; func Partial_Sums f -> FinSequence of Curves T means :: TOPALG_6:def 13 len f = len it & f.1 = it.1 & for i being Nat st 1<=i & i Curve of T equals :: TOPALG_6:def 14 (Partial_Sums f).len f if len f > 0 otherwise {}; end; theorem :: TOPALG_6:40 for c being Curve of T holds Sum <*c*> = c; theorem :: TOPALG_6:41 for c being Curve of T, f being FinSequence of Curves T holds Sum(f ^ <*c*>) = Sum f + c; theorem :: TOPALG_6:42 for X being set, f being FinSequence of Curves T st (for i being Nat st 1 <= i & i <= len f holds rng(f/.i) c= X) holds rng Sum f c= X; theorem :: TOPALG_6:43 for T being non empty TopSpace for f being FinSequence of Curves T st len f > 0 & (for i being Nat st 1 <= i & i < len f holds (f/.i).sup dom(f/.i) = (f/.(i+1)).inf dom(f/.(i+1)) & sup dom(f/.i) = inf dom(f/.(i+1))) & (for i being Nat st 1 <= i & i <= len f holds f/.i is with_endpoints) holds ex c being with_endpoints Curve of T st Sum f = c & dom c = [.inf dom(f/.1), sup dom(f/.(len f)).] & the_first_point_of c = (f/.1).(inf dom(f/.1)) & the_last_point_of c = (f/.(len f)).(sup dom(f/.(len f))); theorem :: TOPALG_6:44 for T being non empty TopSpace for f1,f2 being FinSequence of Curves T for c1,c2 being with_endpoints Curve of T st len f1 > 0 & len f1 = len f2 & Sum f1 = c1 & Sum f2 = c2 & (for i being Nat st 1 <= i & i < len f1 holds (f1/.i).sup dom(f1/.i) = (f1/.(i+1)).inf dom(f1/.(i+1)) & sup dom(f1/.i) = inf dom(f1/.(i+1))) & (for i being Nat st 1 <= i & i < len f2 holds (f2/.i).sup dom(f2/.i) = (f2/.(i+1)).inf dom(f2/.(i+1)) & sup dom(f2/.i) = inf dom(f2/.(i+1)) ) & (for i being Nat st 1 <= i & i <= len f1 holds ex c3,c4 being with_endpoints Curve of T st c3 = f1/.i & c4 = f2/.i & c3,c4 are_homotopic & dom c3 = dom c4) holds c1,c2 are_homotopic; theorem :: TOPALG_6:45 for c being with_endpoints Curve of T for h being FinSequence of REAL st len h >= 2 & h.1 = inf dom c & h.len h = sup dom c & h is increasing holds ex f being FinSequence of Curves T st len f = len h - 1 & c = Sum f & (for i being Nat st 1 <= i & i <= len f holds f/.i = c | ([.h/.i,h/.(i+1).])); theorem :: TOPALG_6:46 n >= 2 implies TUnitSphere(n) is having_trivial_Fundamental_Group; theorem :: TOPALG_6:47 for n being non zero Nat, r being positive Real, x being Point of TOP-REAL n st n >= 3 holds Tcircle(x,r) is having_trivial_Fundamental_Group;