:: TOPALG_4 semantic presentation

Lemma31: 1 in {1,2}
by TARSKI:def 2;

Lemma32: 2 in {1,2}
by TARSKI:def 2;

theorem Th1: :: TOPALG_4:1
for G, H being non empty HGrStr
for x being Element of (product <*G,H*>) ex g being Element of G ex h being Element of H st x = <*g,h*>
proof end;

definition
let G1 be non empty HGrStr , G2 be non empty HGrStr , H1 be non empty HGrStr , H2 be non empty HGrStr ;
let f be Function of G1,H1;
let g be Function of G2,H2;
func Gr2Iso c5,c6 -> Function of (product <*a1,a2*>),(product <*a3,a4*>) means :Def1: :: TOPALG_4:def 1
for x being Element of (product <*G1,G2*>) ex x1 being Element of G1 ex x2 being Element of G2 st
( x = <*x1,x2*> & it . x = <*(f . x1),(g . x2)*> );
existence
ex b1 being Function of (product <*G1,G2*>),(product <*H1,H2*>) st
for x being Element of (product <*G1,G2*>) ex x1 being Element of G1 ex x2 being Element of G2 st
( x = <*x1,x2*> & b1 . x = <*(f . x1),(g . x2)*> )
proof end;
uniqueness
for b1, b2 being Function of (product <*G1,G2*>),(product <*H1,H2*>) st ( for x being Element of (product <*G1,G2*>) ex x1 being Element of G1 ex x2 being Element of G2 st
( x = <*x1,x2*> & b1 . x = <*(f . x1),(g . x2)*> ) ) & ( for x being Element of (product <*G1,G2*>) ex x1 being Element of G1 ex x2 being Element of G2 st
( x = <*x1,x2*> & b2 . x = <*(f . x1),(g . x2)*> ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines Gr2Iso TOPALG_4:def 1 :
for G1, G2, H1, H2 being non empty HGrStr
for f being Function of G1,H1
for g being Function of G2,H2
for b7 being Function of (product <*G1,G2*>),(product <*H1,H2*>) holds
( b7 = Gr2Iso f,g iff for x being Element of (product <*G1,G2*>) ex x1 being Element of G1 ex x2 being Element of G2 st
( x = <*x1,x2*> & b7 . x = <*(f . x1),(g . x2)*> ) );

theorem Th2: :: TOPALG_4:2
for G1, G2, H1, H2 being non empty HGrStr
for f being Function of G1,H1
for g being Function of G2,H2
for x1 being Element of G1
for x2 being Element of G2 holds (Gr2Iso f,g) . <*x1,x2*> = <*(f . x1),(g . x2)*>
proof end;

definition
let G1 be Group, G2 be Group, H1 be Group, H2 be Group;
let f be Homomorphism of G1,H1;
let g be Homomorphism of G2,H2;
redefine func Gr2Iso as Gr2Iso c5,c6 -> Homomorphism of (product <*a1,a2*>),(product <*a3,a4*>);
coherence
Gr2Iso f,g is Homomorphism of (product <*G1,G2*>),(product <*H1,H2*>)
proof end;
end;

theorem Th3: :: TOPALG_4:3
for G1, G2, H1, H2 being non empty HGrStr
for f being Function of G1,H1
for g being Function of G2,H2 st f is one-to-one & g is one-to-one holds
Gr2Iso f,g is one-to-one
proof end;

theorem Th4: :: TOPALG_4:4
for G1, G2, H1, H2 being non empty HGrStr
for f being Function of G1,H1
for g being Function of G2,H2 st f is onto & g is onto holds
Gr2Iso f,g is onto
proof end;

theorem Th5: :: TOPALG_4:5
for G1, G2, H1, H2 being Group
for f being Homomorphism of G1,H1
for g being Homomorphism of G2,H2 st f is_isomorphism & g is_isomorphism holds
Gr2Iso f,g is_isomorphism
proof end;

theorem Th6: :: TOPALG_4:6
for G1, G2, H1, H2 being Group st G1,H1 are_isomorphic & G2,H2 are_isomorphic holds
product <*G1,G2*>, product <*H1,H2*> are_isomorphic
proof end;

set I = the carrier of I[01] ;

reconsider j0 = 0, j1 = 1 as Point of I[01] by BORSUK_1:def 17, BORSUK_1:def 18;

theorem Th7: :: TOPALG_4:7
for f, g being Function st dom f = dom g holds
pr1 <:f,g:> = f
proof end;

theorem Th8: :: TOPALG_4:8
for f, g being Function st dom f = dom g holds
pr2 <:f,g:> = g
proof end;

definition
let S be non empty TopSpace;
let T be non empty TopSpace;
let Y be non empty TopSpace;
let f be Function of Y,S;
let g be Function of Y,T;
redefine func <: as <:c4,c5:> -> Function of a3,[:a1,a2:];
coherence
<:f,g:> is Function of Y,[:S,T:]
proof end;
end;

definition
let S be non empty TopSpace;
let T be non empty TopSpace;
let Y be non empty TopSpace;
let f be Function of Y,[:S,T:];
redefine func pr1 as pr1 c4 -> Function of a3,a1;
coherence
pr1 f is Function of Y,S
proof end;
redefine func pr2 as pr2 c4 -> Function of a3,a2;
coherence
pr2 f is Function of Y,T
proof end;
end;

theorem Th9: :: TOPALG_4:9
for Y, S, T being non empty TopSpace
for f being continuous Function of Y,[:S,T:] holds pr1 f is continuous
proof end;

theorem Th10: :: TOPALG_4:10
for Y, S, T being non empty TopSpace
for f being continuous Function of Y,[:S,T:] holds pr2 f is continuous
proof end;

theorem Th11: :: TOPALG_4:11
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T st [s1,t1],[s2,t2] are_connected holds
s1,s2 are_connected
proof end;

theorem Th12: :: TOPALG_4:12
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T st [s1,t1],[s2,t2] are_connected holds
t1,t2 are_connected
proof end;

theorem Th13: :: TOPALG_4:13
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T st [s1,t1],[s2,t2] are_connected holds
for L being Path of [s1,t1],[s2,t2] holds pr1 L is Path of s1,s2
proof end;

theorem Th14: :: TOPALG_4:14
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T st [s1,t1],[s2,t2] are_connected holds
for L being Path of [s1,t1],[s2,t2] holds pr2 L is Path of t1,t2
proof end;

theorem Th15: :: TOPALG_4:15
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T st s1,s2 are_connected & t1,t2 are_connected holds
[s1,t1],[s2,t2] are_connected
proof end;

theorem Th16: :: TOPALG_4:16
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T st s1,s2 are_connected & t1,t2 are_connected holds
for L1 being Path of s1,s2
for L2 being Path of t1,t2 holds <:L1,L2:> is Path of [s1,t1],[s2,t2]
proof end;

definition
let S be non empty arcwise_connected TopSpace, T be non empty arcwise_connected TopSpace;
let s1 be Point of S, s2 be Point of S;
let t1 be Point of T, t2 be Point of T;
let L1 be Path of s1,s2;
let L2 be Path of t1,t2;
redefine func <: as <:c7,c8:> -> Path of [a3,a5],[a4,a6];
coherence
<:L1,L2:> is Path of [s1,t1],[s2,t2]
proof end;
end;

definition
let S be non empty TopSpace, T be non empty TopSpace;
let s be Point of S;
let t be Point of T;
let L1 be Loop of s;
let L2 be Loop of t;
redefine func <: as <:c5,c6:> -> Loop of [a3,a4];
coherence
<:L1,L2:> is Loop of [s,t]
by ;
end;

registration
let S be non empty arcwise_connected TopSpace, T be non empty arcwise_connected TopSpace;
cluster [:a1,a2:] -> arcwise_connected ;
coherence
[:S,T:] is arcwise_connected
proof end;
end;

definition
let S be non empty arcwise_connected TopSpace, T be non empty arcwise_connected TopSpace;
let s1 be Point of S, s2 be Point of S;
let t1 be Point of T, t2 be Point of T;
let L be Path of [s1,t1],[s2,t2];
redefine func pr1 as pr1 c7 -> Path of a3,a4;
coherence
pr1 L is Path of s1,s2
proof end;
redefine func pr2 as pr2 c7 -> Path of a5,a6;
coherence
pr2 L is Path of t1,t2
proof end;
end;

definition
let S be non empty TopSpace, T be non empty TopSpace;
let s be Point of S;
let t be Point of T;
let L be Loop of [s,t];
redefine func pr1 as pr1 c5 -> Loop of a3;
coherence
pr1 L is Loop of s
by ;
redefine func pr2 as pr2 c5 -> Loop of a4;
coherence
pr2 L is Loop of t
by ;
end;

Lemma115: for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for H being Homotopy of l1,l2 st l1,l2 are_homotopic holds
( pr1 H is continuous & ( for a being Point of I[01] holds
( (pr1 H) . a,0 = (pr1 l1) . a & (pr1 H) . a,1 = (pr1 l2) . a & ( for b being Point of I[01] holds
( (pr1 H) . 0,b = s1 & (pr1 H) . 1,b = s2 ) ) ) ) )
proof end;

Lemma116: for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for H being Homotopy of l1,l2 st l1,l2 are_homotopic holds
( pr2 H is continuous & ( for a being Point of I[01] holds
( (pr2 H) . a,0 = (pr2 l1) . a & (pr2 H) . a,1 = (pr2 l2) . a & ( for b being Point of I[01] holds
( (pr2 H) . 0,b = t1 & (pr2 H) . 1,b = t2 ) ) ) ) )
proof end;

theorem Th17: :: TOPALG_4:17
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for H being Homotopy of l1,l2
for p, q being Path of s1,s2 st p = pr1 l1 & q = pr1 l2 & l1,l2 are_homotopic holds
pr1 H is Homotopy of p,q
proof end;

theorem Th18: :: TOPALG_4:18
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for H being Homotopy of l1,l2
for p, q being Path of t1,t2 st p = pr2 l1 & q = pr2 l2 & l1,l2 are_homotopic holds
pr2 H is Homotopy of p,q
proof end;

theorem Th19: :: TOPALG_4:19
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for p, q being Path of s1,s2 st p = pr1 l1 & q = pr1 l2 & l1,l2 are_homotopic holds
p,q are_homotopic
proof end;

theorem Th20: :: TOPALG_4:20
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for p, q being Path of t1,t2 st p = pr2 l1 & q = pr2 l2 & l1,l2 are_homotopic holds
p,q are_homotopic
proof end;

Lemma120: for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for p, q being Path of s1,s2
for x, y being Path of t1,t2
for f being Homotopy of p,q
for g being Homotopy of x,y st p = pr1 l1 & q = pr1 l2 & x = pr2 l1 & y = pr2 l2 & p,q are_homotopic & x,y are_homotopic holds
( <:f,g:> is continuous & ( for a being Point of I[01] holds
( <:f,g:> . a,0 = l1 . a & <:f,g:> . a,1 = l2 . a & ( for b being Point of I[01] holds
( <:f,g:> . 0,b = [s1,t1] & <:f,g:> . 1,b = [s2,t2] ) ) ) ) )
proof end;

theorem Th21: :: TOPALG_4:21
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for p, q being Path of s1,s2
for x, y being Path of t1,t2
for f being Homotopy of p,q
for g being Homotopy of x,y st p = pr1 l1 & q = pr1 l2 & x = pr2 l1 & y = pr2 l2 & p,q are_homotopic & x,y are_homotopic holds
<:f,g:> is Homotopy of l1,l2
proof end;

theorem Th22: :: TOPALG_4:22
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for l1, l2 being Path of [s1,t1],[s2,t2]
for p, q being Path of s1,s2
for x, y being Path of t1,t2 st p = pr1 l1 & q = pr1 l2 & x = pr2 l1 & y = pr2 l2 & p,q are_homotopic & x,y are_homotopic holds
l1,l2 are_homotopic
proof end;

theorem Th23: :: TOPALG_4:23
for S, T being non empty TopSpace
for s1, s2, s3 being Point of S
for t1, t2, t3 being Point of T
for l1 being Path of [s1,t1],[s2,t2]
for l2 being Path of [s2,t2],[s3,t3]
for p1 being Path of s1,s2
for p2 being Path of s2,s3 st [s1,t1],[s2,t2] are_connected & [s2,t2],[s3,t3] are_connected & p1 = pr1 l1 & p2 = pr1 l2 holds
pr1 (l1 + l2) = p1 + p2
proof end;

theorem Th24: :: TOPALG_4:24
for S, T being non empty arcwise_connected TopSpace
for s1, s2, s3 being Point of S
for t1, t2, t3 being Point of T
for l1 being Path of [s1,t1],[s2,t2]
for l2 being Path of [s2,t2],[s3,t3] holds pr1 (l1 + l2) = (pr1 l1) + (pr1 l2)
proof end;

theorem Th25: :: TOPALG_4:25
for S, T being non empty TopSpace
for s1, s2, s3 being Point of S
for t1, t2, t3 being Point of T
for l1 being Path of [s1,t1],[s2,t2]
for l2 being Path of [s2,t2],[s3,t3]
for p1 being Path of t1,t2
for p2 being Path of t2,t3 st [s1,t1],[s2,t2] are_connected & [s2,t2],[s3,t3] are_connected & p1 = pr2 l1 & p2 = pr2 l2 holds
pr2 (l1 + l2) = p1 + p2
proof end;

theorem Th26: :: TOPALG_4:26
for S, T being non empty arcwise_connected TopSpace
for s1, s2, s3 being Point of S
for t1, t2, t3 being Point of T
for l1 being Path of [s1,t1],[s2,t2]
for l2 being Path of [s2,t2],[s3,t3] holds pr2 (l1 + l2) = (pr2 l1) + (pr2 l2)
proof end;

definition
let S be non empty TopSpace, T be non empty TopSpace;
let s be Point of S;
let t be Point of T;
set pS = pi_1 [:S,T:],[s,t];
set G = <*(pi_1 S,s),(pi_1 T,t)*>;
set pT = product <*(pi_1 S,s),(pi_1 T,t)*>;
func FGPrIso c3,c4 -> Function of (pi_1 [:a1,a2:],[a3,a4]),(product <*(pi_1 a1,a3),(pi_1 a2,a4)*>) means :Def2: :: TOPALG_4:def 2
for x being Point of (pi_1 [:I,j0:],[j1,S]) ex l being Loop of [j1,S] st
( x = Class (EqRel [:I,j0:],[j1,S]),l & it . x = <*(Class (EqRel I,j1),(pr1 l)),(Class (EqRel j0,S),(pr2 l))*> );
existence
ex b1 being Function of (pi_1 [:S,T:],[s,t]),(product <*(pi_1 S,s),(pi_1 T,t)*>) st
for x being Point of (pi_1 [:S,T:],[s,t]) ex l being Loop of [s,t] st
( x = Class (EqRel [:S,T:],[s,t]),l & b1 . x = <*(Class (EqRel S,s),(pr1 l)),(Class (EqRel T,t),(pr2 l))*> )
proof end;
uniqueness
for b1, b2 being Function of (pi_1 [:S,T:],[s,t]),(product <*(pi_1 S,s),(pi_1 T,t)*>) st ( for x being Point of (pi_1 [:S,T:],[s,t]) ex l being Loop of [s,t] st
( x = Class (EqRel [:S,T:],[s,t]),l & b1 . x = <*(Class (EqRel S,s),(pr1 l)),(Class (EqRel T,t),(pr2 l))*> ) ) & ( for x being Point of (pi_1 [:S,T:],[s,t]) ex l being Loop of [s,t] st
( x = Class (EqRel [:S,T:],[s,t]),l & b2 . x = <*(Class (EqRel S,s),(pr1 l)),(Class (EqRel T,t),(pr2 l))*> ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines FGPrIso TOPALG_4:def 2 :
for S, T being non empty TopSpace
for s being Point of S
for t being Point of T
for b5 being Function of (pi_1 [:S,T:],[s,t]),(product <*(pi_1 S,s),(pi_1 T,t)*>) holds
( b5 = FGPrIso s,t iff for x being Point of (pi_1 [:S,T:],[s,t]) ex l being Loop of [s,t] st
( x = Class (EqRel [:S,T:],[s,t]),l & b5 . x = <*(Class (EqRel S,s),(pr1 l)),(Class (EqRel T,t),(pr2 l))*> ) );

theorem Th27: :: TOPALG_4:27
for S, T being non empty TopSpace
for s being Point of S
for t being Point of T
for x being Point of (pi_1 [:S,T:],[s,t])
for l being Loop of [s,t] st x = Class (EqRel [:S,T:],[s,t]),l holds
(FGPrIso s,t) . x = <*(Class (EqRel S,s),(pr1 l)),(Class (EqRel T,t),(pr2 l))*>
proof end;

theorem Th28: :: TOPALG_4:28
for S, T being non empty TopSpace
for s being Point of S
for t being Point of T
for l being Loop of [s,t] holds (FGPrIso s,t) . (Class (EqRel [:S,T:],[s,t]),l) = <*(Class (EqRel S,s),(pr1 l)),(Class (EqRel T,t),(pr2 l))*>
proof end;

registration
let S be non empty TopSpace, T be non empty TopSpace;
let s be Point of S;
let t be Point of T;
cluster FGPrIso a3,a4 -> one-to-one onto ;
coherence
( FGPrIso s,t is one-to-one & FGPrIso s,t is onto )
proof end;
end;

definition
let S be non empty TopSpace, T be non empty TopSpace;
let s be Point of S;
let t be Point of T;
redefine func FGPrIso as FGPrIso c3,c4 -> Homomorphism of (pi_1 [:a1,a2:],[a3,a4]),(product <*(pi_1 a1,a3),(pi_1 a2,a4)*>);
coherence
FGPrIso s,t is Homomorphism of (pi_1 [:S,T:],[s,t]),(product <*(pi_1 S,s),(pi_1 T,t)*>)
proof end;
end;

theorem Th29: :: TOPALG_4:29
for S, T being non empty TopSpace
for s being Point of S
for t being Point of T holds FGPrIso s,t is_isomorphism
proof end;

theorem Th30: :: TOPALG_4:30
for S, T being non empty TopSpace
for s being Point of S
for t being Point of T holds pi_1 [:S,T:],[s,t], product <*(pi_1 S,s),(pi_1 T,t)*> are_isomorphic
proof end;

theorem Th31: :: TOPALG_4:31
for S, T being non empty TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T
for f being Homomorphism of (pi_1 S,s1),(pi_1 S,s2)
for g being Homomorphism of (pi_1 T,t1),(pi_1 T,t2) st f is_isomorphism & g is_isomorphism holds
(Gr2Iso f,g) * (FGPrIso s1,t1) is_isomorphism
proof end;

theorem Th32: :: TOPALG_4:32
for S, T being non empty arcwise_connected TopSpace
for s1, s2 being Point of S
for t1, t2 being Point of T holds pi_1 [:S,T:],[s1,t1], product <*(pi_1 S,s2),(pi_1 T,t2)*> are_isomorphic
proof end;