let G be Group; :: thesis: for H1, H2 being Subgroup of G holds H1 "\/" H2 = gr (H1 * H2)
let H1, H2 be Subgroup of G; :: thesis: H1 "\/" H2 = gr (H1 * H2)
set H = gr ((carr H1) * (carr H2));
(carr H1) \/ (carr H2) c= (carr H1) * (carr H2)
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in (carr H1) \/ (carr H2) or x in (carr H1) * (carr H2) )
assume A1: x in (carr H1) \/ (carr H2) ; :: thesis: x in (carr H1) * (carr H2)
then reconsider a = x as Element of G ;
now
per cases ( x in carr H1 or x in carr H2 ) by A1, XBOOLE_0:def 3;
suppose A2: x in carr H1 ; :: thesis: x in (carr H1) * (carr H2)
1_ G in H2 by GROUP_2:55;
then ( 1_ G in carr H2 & a * (1_ G) = a ) by GROUP_1:def 5, STRUCT_0:def 5;
hence x in (carr H1) * (carr H2) by A2; :: thesis: verum
end;
suppose A3: x in carr H2 ; :: thesis: x in (carr H1) * (carr H2)
1_ G in H1 by GROUP_2:55;
then ( 1_ G in carr H1 & (1_ G) * a = a ) by GROUP_1:def 5, STRUCT_0:def 5;
hence x in (carr H1) * (carr H2) by A3; :: thesis: verum
end;
end;
end;
hence x in (carr H1) * (carr H2) ; :: thesis: verum
end;
then A4: H1 "\/" H2 is Subgroup of gr ((carr H1) * (carr H2)) by Th41;
now
let a be Element of G; :: thesis: ( a in gr ((carr H1) * (carr H2)) implies a in H1 "\/" H2 )
assume a in gr ((carr H1) * (carr H2)) ; :: thesis: a in H1 "\/" H2
then consider F being FinSequence of the carrier of G, I being FinSequence of INT such that
A5: len F = len I and
A6: rng F c= (carr H1) * (carr H2) and
A7: a = Product (F |^ I) by Th37;
rng (F |^ I) c= carr (H1 "\/" H2)
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in rng (F |^ I) or x in carr (H1 "\/" H2) )
set f = F |^ I;
assume x in rng (F |^ I) ; :: thesis: x in carr (H1 "\/" H2)
then consider y being set such that
A8: y in dom (F |^ I) and
A9: (F |^ I) . y = x by FUNCT_1:def 5;
reconsider y = y as Element of NAT by A8;
A10: len (F |^ I) = len F by Def4;
then A11: y in dom I by A5, A8, FINSEQ_3:31;
then ( I . y in rng I & rng I c= INT ) by FINSEQ_1:def 4, FUNCT_1:def 5;
then reconsider i = I . y as Integer ;
A12: y in dom F by A8, A10, FINSEQ_3:31;
( I /. y = I . y & @ (I /. y) = I /. y ) by A11, PARTFUN1:def 8;
then A13: x = (F /. y) |^ i by A9, A12, Def4;
y in dom F by A8, A10, FINSEQ_3:31;
then ( F /. y = F . y & F . y in rng F ) by FUNCT_1:def 5, PARTFUN1:def 8;
then consider b, c being Element of G such that
A14: F /. y = b * c and
A15: b in carr H1 and
A16: c in carr H2 by A6, GROUP_2:12;
now
per cases ( i >= 0 or i < 0 ) ;
suppose i >= 0 ; :: thesis: x in carr (H1 "\/" H2)
then reconsider n = i as Element of NAT by INT_1:16;
defpred S1[ Nat, set ] means ( ( $1 mod 2 = 1 implies $2 = b ) & ( $1 mod 2 = 0 implies $2 = c ) );
A17: for k being Nat st k in Seg (2 * n) holds
ex x being set st S1[k,x]
proof
let k be Nat; :: thesis: ( k in Seg (2 * n) implies ex x being set st S1[k,x] )
assume k in Seg (2 * n) ; :: thesis: ex x being set st S1[k,x]
now
per cases ( k mod 2 = 1 or k mod 2 = 0 ) by NAT_D:12;
suppose A18: k mod 2 = 1 ; :: thesis: ex x being set st
( ( k mod 2 = 1 implies x = b ) & ( k mod 2 = 0 implies x = c ) )

reconsider x = b as set ;
take x = x; :: thesis: ( ( k mod 2 = 1 implies x = b ) & ( k mod 2 = 0 implies x = c ) )
thus ( ( k mod 2 = 1 implies x = b ) & ( k mod 2 = 0 implies x = c ) ) by A18; :: thesis: verum
end;
suppose A19: k mod 2 = 0 ; :: thesis: ex x being set st
( ( k mod 2 = 1 implies x = b ) & ( k mod 2 = 0 implies x = c ) )

reconsider x = c as set ;
take x = x; :: thesis: ( ( k mod 2 = 1 implies x = b ) & ( k mod 2 = 0 implies x = c ) )
thus ( ( k mod 2 = 1 implies x = b ) & ( k mod 2 = 0 implies x = c ) ) by A19; :: thesis: verum
end;
end;
end;
hence ex x being set st S1[k,x] ; :: thesis: verum
end;
consider p being FinSequence such that
A20: dom p = Seg (2 * n) and
A21: for k being Nat st k in Seg (2 * n) holds
S1[k,p . k] from FINSEQ_1:sch 1(A17);
A22: len p = 2 * n by A20, FINSEQ_1:def 3;
A23: rng p c= {b,c}
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in rng p or x in {b,c} )
assume x in rng p ; :: thesis: x in {b,c}
then consider y being set such that
A24: y in dom p and
A25: p . y = x by FUNCT_1:def 5;
reconsider y = y as Element of NAT by A24;
hence x in {b,c} ; :: thesis: verum
end;
then rng p c= the carrier of G by XBOOLE_1:1;
then reconsider p = p as FinSequence of the carrier of G by FINSEQ_1:def 4;
defpred S2[ Nat] means ( $1 <= 2 * n & $1 mod 2 = 0 implies for F1 being FinSequence of the carrier of G st F1 = p | (Seg $1) holds
Product F1 = (F /. y) |^ ($1 div 2) );
A26: for k being Nat st ( for l being Nat st l < k holds
S2[l] ) holds
S2[k]
proof
let k be Nat; :: thesis: ( ( for l being Nat st l < k holds
S2[l] ) implies S2[k] )

assume A27: for l being Nat st l < k holds
S2[l] ; :: thesis: S2[k]
assume that
A28: k <= 2 * n and
A29: k mod 2 = 0 ; :: thesis: for F1 being FinSequence of the carrier of G st F1 = p | (Seg k) holds
Product F1 = (F /. y) |^ (k div 2)

let F1 be FinSequence of the carrier of G; :: thesis: ( F1 = p | (Seg k) implies Product F1 = (F /. y) |^ (k div 2) )
assume A30: F1 = p | (Seg k) ; :: thesis: Product F1 = (F /. y) |^ (k div 2)
now
per cases ( k = 0 or k <> 0 ) ;
suppose A31: k = 0 ; :: thesis: Product F1 = (F /. y) |^ (k div 2)
then F1 = <*> the carrier of G by A30;
then A32: Product F1 = 1_ G by Th11;
2 * 0 = 0 ;
then 0 div 2 = 0 by NAT_D:18;
hence Product F1 = (F /. y) |^ (k div 2) by A31, A32, GROUP_1:43; :: thesis: verum
end;
suppose k <> 0 ; :: thesis: Product F1 = (F /. y) |^ (k div 2)
then A33: k >= 1 by NAT_1:14;
k <> 1 by A29, NAT_D:14;
then k > 1 by A33, XXREAL_0:1;
then k >= 1 + 1 by NAT_1:13;
then k - 2 >= 2 - 2 by XREAL_1:11;
then reconsider m = k - 2 as Element of NAT by INT_1:16;
A34: m + 2 = k ;
then A35: m < k by NAT_1:16;
A36: m <= 2 * n by A28, A34, NAT_1:16, XXREAL_0:2;
1 * 2 = 2 ;
then A37: m mod 2 = 0 by A29, NAT_D:15;
reconsider q = p | (Seg m) as FinSequence of the carrier of G by FINSEQ_1:23;
A38: Product q = (F /. y) |^ (m div 2) by A27, A35, A36, A37;
A39: ex j being Nat st 2 * n = k + j by A28, NAT_1:10;
ex o being Nat st 2 * n = m + o by A36, NAT_1:10;
then A40: ( len F1 = k & len q = m ) by A22, A30, A39, FINSEQ_3:59;
A41: len F1 = m + 2 by A22, A30, A39, FINSEQ_3:59
.= (len q) + (len <*b,c*>) by A40, FINSEQ_1:61 ;
A42: now
let l be Element of NAT ; :: thesis: ( l in dom q implies F1 . l = q . l )
assume A43: l in dom q ; :: thesis: F1 . l = q . l
then ( 1 <= l & l <= len q & len q <= len F1 ) by A34, A40, FINSEQ_3:27, NAT_1:16;
then ( 1 <= l & l <= len F1 ) by XXREAL_0:2;
then l in dom F1 by FINSEQ_3:27;
then ( F1 . l = p . l & q . l = p . l ) by A30, A43, FUNCT_1:70;
hence F1 . l = q . l ; :: thesis: verum
end;
now
let l be Element of NAT ; :: thesis: ( l in dom <*b,c*> implies F1 . ((len q) + l) = <*b,c*> . l )
assume l in dom <*b,c*> ; :: thesis: F1 . ((len q) + l) = <*b,c*> . l
then A44: l in {1,2} by FINSEQ_1:4, FINSEQ_3:29;
now
per cases ( l = 1 or l = 2 ) by A44, TARSKI:def 2;
suppose A45: l = 1 ; :: thesis: F1 . ((len q) + l) = <*b,c*> . l
then A46: <*b,c*> . l = b by FINSEQ_1:61;
( m + 1 <= k & 1 <= m + 1 ) by A35, NAT_1:12, NAT_1:13;
then A47: m + 1 in dom F1 by A40, FINSEQ_3:27;
then A48: F1 . ((len q) + l) = p . (m + 1) by A30, A40, A45, FUNCT_1:70;
A49: (m + 1) mod 2 = 1 by A37, NAT_D:16;
dom F1 c= dom p by A30, RELAT_1:89;
hence F1 . ((len q) + l) = <*b,c*> . l by A20, A21, A46, A47, A48, A49; :: thesis: verum
end;
suppose A50: l = 2 ; :: thesis: F1 . ((len q) + l) = <*b,c*> . l
then A51: <*b,c*> . l = c by FINSEQ_1:61;
1 <= m + (1 + 1) by NAT_1:12;
then A52: m + 2 in dom F1 by A40, FINSEQ_3:27;
then A53: F1 . ((len q) + l) = p . (m + 2) by A30, A40, A50, FUNCT_1:70;
dom F1 c= dom p by A30, RELAT_1:89;
hence F1 . ((len q) + l) = <*b,c*> . l by A20, A21, A29, A51, A52, A53; :: thesis: verum
end;
end;
end;
hence F1 . ((len q) + l) = <*b,c*> . l ; :: thesis: verum
end;
then F1 = q ^ <*b,c*> by A41, A42, FINSEQ_3:43;
then A54: Product F1 = (Product q) * (Product <*b,c*>) by Th8
.= (Product q) * (F /. y) by A14, FINSOP_1:13
.= (F /. y) |^ ((m div 2) + 1) by A38, GROUP_1:66 ;
(m div (2 * 1)) + 1 = (m div 2) + (2 div 2) by NAT_D:18
.= k div 2 by A34, A37, NAT_D:19 ;
hence Product F1 = (F /. y) |^ (k div 2) by A54; :: thesis: verum
end;
end;
end;
hence Product F1 = (F /. y) |^ (k div 2) ; :: thesis: verum
end;
A55: for k being Nat holds S2[k] from NAT_1:sch 4(A26);
A56: (2 * n) mod 2 = 0 by NAT_D:13;
A57: (2 * n) div 2 = n by NAT_D:18;
len p = 2 * n by A20, FINSEQ_1:def 3;
then p = p | (Seg (2 * n)) by FINSEQ_3:55;
then A58: x = Product p by A13, A55, A56, A57;
( b in (carr H1) \/ (carr H2) & c in (carr H1) \/ (carr H2) ) by A15, A16, XBOOLE_0:def 3;
then {b,c} c= (carr H1) \/ (carr H2) by ZFMISC_1:38;
then A59: rng p c= (carr H1) \/ (carr H2) by A23, XBOOLE_1:1;
( (carr H1) \/ (carr H2) c= the carrier of (gr ((carr H1) \/ (carr H2))) & carr (gr ((carr H1) \/ (carr H2))) = the carrier of (gr ((carr H1) \/ (carr H2))) ) by Def5;
then x in gr ((carr H1) \/ (carr H2)) by A58, A59, Th21, XBOOLE_1:1;
hence x in carr (H1 "\/" H2) by STRUCT_0:def 5; :: thesis: verum
end;
suppose A60: i < 0 ; :: thesis: x in carr (H1 "\/" H2)
set n = abs i;
defpred S1[ Nat, set ] means ( ( $1 mod 2 = 1 implies $2 = c " ) & ( $1 mod 2 = 0 implies $2 = b " ) );
A61: for k being Nat st k in Seg (2 * (abs i)) holds
ex x being set st S1[k,x]
proof
let k be Nat; :: thesis: ( k in Seg (2 * (abs i)) implies ex x being set st S1[k,x] )
assume k in Seg (2 * (abs i)) ; :: thesis: ex x being set st S1[k,x]
now
per cases ( k mod 2 = 1 or k mod 2 = 0 ) by NAT_D:12;
suppose A62: k mod 2 = 1 ; :: thesis: ex x being set st
( ( k mod 2 = 1 implies x = c " ) & ( k mod 2 = 0 implies x = b " ) )

reconsider x = c " as set ;
take x = x; :: thesis: ( ( k mod 2 = 1 implies x = c " ) & ( k mod 2 = 0 implies x = b " ) )
thus ( ( k mod 2 = 1 implies x = c " ) & ( k mod 2 = 0 implies x = b " ) ) by A62; :: thesis: verum
end;
suppose A63: k mod 2 = 0 ; :: thesis: ex x being set st
( ( k mod 2 = 1 implies x = c " ) & ( k mod 2 = 0 implies x = b " ) )

reconsider x = b " as set ;
take x = x; :: thesis: ( ( k mod 2 = 1 implies x = c " ) & ( k mod 2 = 0 implies x = b " ) )
thus ( ( k mod 2 = 1 implies x = c " ) & ( k mod 2 = 0 implies x = b " ) ) by A63; :: thesis: verum
end;
end;
end;
hence ex x being set st S1[k,x] ; :: thesis: verum
end;
consider p being FinSequence such that
A64: dom p = Seg (2 * (abs i)) and
A65: for k being Nat st k in Seg (2 * (abs i)) holds
S1[k,p . k] from FINSEQ_1:sch 1(A61);
A66: len p = 2 * (abs i) by A64, FINSEQ_1:def 3;
A67: rng p c= {(b " ),(c " )}
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in rng p or x in {(b " ),(c " )} )
assume x in rng p ; :: thesis: x in {(b " ),(c " )}
then consider y being set such that
A68: y in dom p and
A69: p . y = x by FUNCT_1:def 5;
reconsider y = y as Element of NAT by A68;
now
per cases ( y mod 2 = 0 or y mod 2 = 1 ) by NAT_D:12;
suppose y mod 2 = 0 ; :: thesis: x in {(b " ),(c " )}
then x = b " by A64, A65, A68, A69;
hence x in {(b " ),(c " )} by TARSKI:def 2; :: thesis: verum
end;
suppose y mod 2 = 1 ; :: thesis: x in {(b " ),(c " )}
then x = c " by A64, A65, A68, A69;
hence x in {(b " ),(c " )} by TARSKI:def 2; :: thesis: verum
end;
end;
end;
hence x in {(b " ),(c " )} ; :: thesis: verum
end;
then rng p c= the carrier of G by XBOOLE_1:1;
then reconsider p = p as FinSequence of the carrier of G by FINSEQ_1:def 4;
defpred S2[ Nat] means ( $1 <= 2 * (abs i) & $1 mod 2 = 0 implies for F1 being FinSequence of the carrier of G st F1 = p | (Seg $1) holds
Product F1 = ((F /. y) |^ ($1 div 2)) " );
A70: for k being Nat st ( for l being Nat st l < k holds
S2[l] ) holds
S2[k]
proof
let k be Nat; :: thesis: ( ( for l being Nat st l < k holds
S2[l] ) implies S2[k] )

assume A71: for l being Nat st l < k holds
S2[l] ; :: thesis: S2[k]
assume that
A72: k <= 2 * (abs i) and
A73: k mod 2 = 0 ; :: thesis: for F1 being FinSequence of the carrier of G st F1 = p | (Seg k) holds
Product F1 = ((F /. y) |^ (k div 2)) "

let F1 be FinSequence of the carrier of G; :: thesis: ( F1 = p | (Seg k) implies Product F1 = ((F /. y) |^ (k div 2)) " )
assume A74: F1 = p | (Seg k) ; :: thesis: Product F1 = ((F /. y) |^ (k div 2)) "
now
per cases ( k = 0 or k <> 0 ) ;
suppose A75: k = 0 ; :: thesis: Product F1 = ((F /. y) |^ (k div 2)) "
then F1 = <*> the carrier of G by A74;
then A76: Product F1 = 1_ G by Th11;
2 * 0 = 0 ;
then 0 div 2 = 0 by NAT_D:18;
then (F /. y) |^ (k div 2) = 1_ G by A75, GROUP_1:43;
hence Product F1 = ((F /. y) |^ (k div 2)) " by A76, GROUP_1:16; :: thesis: verum
end;
suppose k <> 0 ; :: thesis: Product F1 = ((F /. y) |^ (k div 2)) "
then A77: k >= 1 by NAT_1:14;
k <> 1 by A73, NAT_D:14;
then k > 1 by A77, XXREAL_0:1;
then k >= 1 + 1 by NAT_1:13;
then k - 2 >= 2 - 2 by XREAL_1:11;
then reconsider m = k - 2 as Element of NAT by INT_1:16;
A78: m + 2 = k ;
then A79: m < k by NAT_1:16;
A80: m <= 2 * (abs i) by A72, A78, NAT_1:16, XXREAL_0:2;
1 * 2 = 2 ;
then A81: m mod 2 = 0 by A73, NAT_D:15;
reconsider q = p | (Seg m) as FinSequence of the carrier of G by FINSEQ_1:23;
A82: Product q = ((F /. y) |^ (m div 2)) " by A71, A79, A80, A81;
A83: ex j being Nat st 2 * (abs i) = k + j by A72, NAT_1:10;
ex o being Nat st 2 * (abs i) = m + o by A80, NAT_1:10;
then A84: ( len F1 = k & len q = m ) by A66, A74, A83, FINSEQ_3:59;
A85: len F1 = m + 2 by A66, A74, A83, FINSEQ_3:59
.= (len q) + (len <*(c " ),(b " )*>) by A84, FINSEQ_1:61 ;
A86: now
let l be Element of NAT ; :: thesis: ( l in dom q implies F1 . l = q . l )
assume A87: l in dom q ; :: thesis: F1 . l = q . l
then ( 1 <= l & l <= len q & len q <= len F1 ) by A78, A84, FINSEQ_3:27, NAT_1:16;
then ( 1 <= l & l <= len F1 ) by XXREAL_0:2;
then l in dom F1 by FINSEQ_3:27;
then ( F1 . l = p . l & q . l = p . l ) by A74, A87, FUNCT_1:70;
hence F1 . l = q . l ; :: thesis: verum
end;
now
let l be Element of NAT ; :: thesis: ( l in dom <*(c " ),(b " )*> implies F1 . ((len q) + l) = <*(c " ),(b " )*> . l )
assume l in dom <*(c " ),(b " )*> ; :: thesis: F1 . ((len q) + l) = <*(c " ),(b " )*> . l
then A88: l in {1,2} by FINSEQ_1:4, FINSEQ_3:29;
now
per cases ( l = 1 or l = 2 ) by A88, TARSKI:def 2;
suppose A89: l = 1 ; :: thesis: F1 . ((len q) + l) = <*(c " ),(b " )*> . l
then A90: <*(c " ),(b " )*> . l = c " by FINSEQ_1:61;
( m + 1 <= k & 1 <= m + 1 ) by A79, NAT_1:12, NAT_1:13;
then A91: m + 1 in dom F1 by A84, FINSEQ_3:27;
then A92: F1 . ((len q) + l) = p . (m + 1) by A74, A84, A89, FUNCT_1:70;
A93: (m + 1) mod 2 = 1 by A81, NAT_D:16;
dom F1 c= dom p by A74, RELAT_1:89;
hence F1 . ((len q) + l) = <*(c " ),(b " )*> . l by A64, A65, A90, A91, A92, A93; :: thesis: verum
end;
suppose A94: l = 2 ; :: thesis: F1 . ((len q) + l) = <*(c " ),(b " )*> . l
then A95: <*(c " ),(b " )*> . l = b " by FINSEQ_1:61;
1 <= m + (1 + 1) by NAT_1:12;
then A96: m + 2 in dom F1 by A84, FINSEQ_3:27;
then A97: F1 . ((len q) + l) = p . (m + 2) by A74, A84, A94, FUNCT_1:70;
dom F1 c= dom p by A74, RELAT_1:89;
hence F1 . ((len q) + l) = <*(c " ),(b " )*> . l by A64, A65, A73, A95, A96, A97; :: thesis: verum
end;
end;
end;
hence F1 . ((len q) + l) = <*(c " ),(b " )*> . l ; :: thesis: verum
end;
then F1 = q ^ <*(c " ),(b " )*> by A85, A86, FINSEQ_3:43;
then A98: Product F1 = (Product q) * (Product <*(c " ),(b " )*>) by Th8
.= (Product q) * ((c " ) * (b " )) by FINSOP_1:13
.= (Product q) * ((F /. y) " ) by A14, GROUP_1:25
.= ((F /. y) * ((F /. y) |^ (m div 2))) " by A82, GROUP_1:25
.= ((F /. y) |^ ((m div 2) + 1)) " by GROUP_1:66 ;
(m div (2 * 1)) + 1 = (m div 2) + (2 div 2) by NAT_D:18
.= k div 2 by A78, A81, NAT_D:19 ;
hence Product F1 = ((F /. y) |^ (k div 2)) " by A98; :: thesis: verum
end;
end;
end;
hence Product F1 = ((F /. y) |^ (k div 2)) " ; :: thesis: verum
end;
A99: for k being Nat holds S2[k] from NAT_1:sch 4(A70);
A100: (2 * (abs i)) mod 2 = 0 by NAT_D:13;
A101: (2 * (abs i)) div 2 = abs i by NAT_D:18;
len p = 2 * (abs i) by A64, FINSEQ_1:def 3;
then A102: p = p | (Seg (2 * (abs i))) by FINSEQ_3:55;
x = ((F /. y) |^ (abs i)) " by A13, A60, GROUP_1:60;
then A103: x = Product p by A99, A100, A101, A102;
( b " in carr H1 & c " in carr H2 ) by A15, A16, GROUP_2:90;
then ( b " in (carr H1) \/ (carr H2) & c " in (carr H1) \/ (carr H2) ) by XBOOLE_0:def 3;
then {(b " ),(c " )} c= (carr H1) \/ (carr H2) by ZFMISC_1:38;
then A104: rng p c= (carr H1) \/ (carr H2) by A67, XBOOLE_1:1;
( (carr H1) \/ (carr H2) c= the carrier of (gr ((carr H1) \/ (carr H2))) & carr (gr ((carr H1) \/ (carr H2))) = the carrier of (gr ((carr H1) \/ (carr H2))) ) by Def5;
then x in gr ((carr H1) \/ (carr H2)) by A103, A104, Th21, XBOOLE_1:1;
hence x in carr (H1 "\/" H2) by STRUCT_0:def 5; :: thesis: verum
end;
end;
end;
hence x in carr (H1 "\/" H2) ; :: thesis: verum
end;
hence a in H1 "\/" H2 by A7, Th21; :: thesis: verum
end;
then gr ((carr H1) * (carr H2)) is Subgroup of H1 "\/" H2 by GROUP_2:67;
hence gr (H1 * H2) = H1 "\/" H2 by A4, GROUP_2:64; :: thesis: verum