:: GROUP_8 semantic presentation

theorem Th1: :: GROUP_8:1
for b1 being strict Group
for b2 being Nat st b2 is prime & ord b1 = b2 & b1 is finite holds
ex b3 being Element of b1 st ord b3 = b2
proof end;

theorem Th2: :: GROUP_8:2
for b1 being strict Group
for b2 being strict Subgroup of b1
for b3, b4 being Element of b2
for b5, b6 being Element of b1 st b3 = b5 & b4 = b6 holds
b3 * b4 = b5 * b6
proof end;

theorem Th3: :: GROUP_8:3
for b1 being strict Group
for b2 being strict Subgroup of b1
for b3 being Element of b2
for b4 being Element of b1 st b3 = b4 holds
for b5 being Nat holds b3 |^ b5 = b4 |^ b5
proof end;

theorem Th4: :: GROUP_8:4
for b1 being strict Group
for b2 being strict Subgroup of b1
for b3 being Element of b2
for b4 being Element of b1 st b3 = b4 holds
for b5 being Integer holds b3 |^ b5 = b4 |^ b5
proof end;

theorem Th5: :: GROUP_8:5
for b1 being strict Group
for b2 being strict Subgroup of b1
for b3 being Element of b2
for b4 being Element of b1 st b3 = b4 & b1 is finite holds
ord b3 = ord b4
proof end;

theorem Th6: :: GROUP_8:6
for b1 being strict Group
for b2 being strict Subgroup of b1
for b3 being Element of b1 st b3 in b2 holds
b2 * b3 c= the carrier of b2
proof end;

theorem Th7: :: GROUP_8:7
for b1 being strict Group
for b2 being Element of b1 st b2 <> 1. b1 holds
gr {b2} <> (1). b1
proof end;

theorem Th8: :: GROUP_8:8
for b1 being strict Group
for b2 being Integer holds (1. b1) |^ b2 = 1. b1
proof end;

theorem Th9: :: GROUP_8:9
for b1 being strict Group
for b2 being Element of b1
for b3 being Integer holds b2 |^ (b3 * (ord b2)) = 1. b1
proof end;

theorem Th10: :: GROUP_8:10
for b1 being strict Group
for b2 being Element of b1 st b2 is_not_of_order_0 holds
for b3 being Integer holds b2 |^ b3 = b2 |^ (b3 mod (ord b2))
proof end;

theorem Th11: :: GROUP_8:11
for b1 being strict Group
for b2 being Element of b1 st b2 is_not_of_order_0 holds
gr {b2} is finite
proof end;

theorem Th12: :: GROUP_8:12
for b1 being strict Group
for b2 being Element of b1 st b2 is_of_order_0 holds
b2 " is_of_order_0
proof end;

theorem Th13: :: GROUP_8:13
for b1 being strict Group
for b2 being Element of b1 holds
( b2 is_of_order_0 iff for b3 being Integer st b2 |^ b3 = 1. b1 holds
b3 = 0 )
proof end;

theorem Th14: :: GROUP_8:14
for b1 being strict Group st ex b2 being Element of b1 st b2 <> 1. b1 holds
( ( for b2 being strict Subgroup of b1 holds
( b2 = b1 or b2 = (1). b1 ) ) iff ( b1 is cyclic Group & b1 is finite & ex b2 being Nat st
( ord b1 = b2 & b2 is prime ) ) )
proof end;

theorem Th15: :: GROUP_8:15
for b1 being strict Group
for b2, b3, b4 being Element of b1
for b5 being Subset of b1 holds
( b4 in (b2 * b5) * b3 iff ex b6 being Element of b1 st
( b4 = (b2 * b6) * b3 & b6 in b5 ) )
proof end;

theorem Th16: :: GROUP_8:16
for b1 being strict Group
for b2 being non empty Subset of b1
for b3 being Element of b1 holds Card b2 = Card (((b3 " ) * b2) * b3)
proof end;

definition
let c1 be strict Group;
let c2, c3 be strict Subgroup of c1;
func Double_Cosets c2,c3 -> Subset-Family of a1 means :: GROUP_8:def 1
for b1 being Subset of a1 holds
( b1 in a4 iff ex b2 being Element of a1 st b1 = (a2 * b2) * a3 );
existence
ex b1 being Subset-Family of c1 st
for b2 being Subset of c1 holds
( b2 in b1 iff ex b3 being Element of c1 st b2 = (c2 * b3) * c3 )
proof end;
uniqueness
for b1, b2 being Subset-Family of c1 st ( for b3 being Subset of c1 holds
( b3 in b1 iff ex b4 being Element of c1 st b3 = (c2 * b4) * c3 ) ) & ( for b3 being Subset of c1 holds
( b3 in b2 iff ex b4 being Element of c1 st b3 = (c2 * b4) * c3 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines Double_Cosets GROUP_8:def 1 :
for b1 being strict Group
for b2, b3 being strict Subgroup of b1
for b4 being Subset-Family of b1 holds
( b4 = Double_Cosets b2,b3 iff for b5 being Subset of b1 holds
( b5 in b4 iff ex b6 being Element of b1 st b5 = (b2 * b6) * b3 ) );

theorem Th17: :: GROUP_8:17
for b1 being strict Group
for b2, b3 being Element of b1
for b4, b5 being strict Subgroup of b1 holds
( b2 in (b4 * b3) * b5 iff ex b6, b7 being Element of b1 st
( b2 = (b6 * b3) * b7 & b6 in b4 & b7 in b5 ) )
proof end;

theorem Th18: :: GROUP_8:18
for b1 being strict Group
for b2, b3 being Element of b1
for b4, b5 being strict Subgroup of b1 holds
( (b4 * b2) * b5 = (b4 * b3) * b5 or for b6 being Element of b1 holds
( not b6 in (b4 * b2) * b5 or not b6 in (b4 * b3) * b5 ) )
proof end;

registration
let c1 be strict Group;
let c2 be strict Subgroup of c1;
cluster Left_Cosets a2 -> non empty ;
coherence
not Left_Cosets c2 is empty
by GROUP_2:165;
end;

notation
let c1 be strict Group;
let c2 be Subgroup of c1;
synonym index c1,c2 for index c2;
end;

theorem Th19: :: GROUP_8:19
for b1 being strict Group
for b2, b3 being strict Subgroup of b1
for b4 being strict Subgroup of b2 st b1 = b2 "\/" b3 & b4 = b2 /\ b3 & b1 is finite holds
index b1,b3 >= index b2,b4
proof end;

theorem Th20: :: GROUP_8:20
for b1 being strict Group
for b2 being strict Subgroup of b1 st b1 is finite holds
index b1,b2 > 0
proof end;

theorem Th21: :: GROUP_8:21
for b1 being strict Group st b1 is finite holds
for b2 being strict Subgroup of b1
for b3, b4 being strict Subgroup of b2 st b2 = b3 "\/" b4 holds
for b5 being strict Subgroup of b3 st b5 = b3 /\ b4 holds
for b6 being strict Subgroup of b4 st b6 = b3 /\ b4 holds
for b7 being strict Subgroup of b2 st b7 = b3 /\ b4 & Left_Cosets b4 is finite & Left_Cosets b3 is finite & index b2,b3, index b2,b4 are_relative_prime holds
( index b2,b4 = index b3,b5 & index b2,b3 = index b4,b6 )
proof end;

theorem Th22: :: GROUP_8:22
for b1 being strict Group
for b2 being strict Subgroup of b1
for b3 being Element of b1 st b3 in b2 holds
for b4 being Integer holds b3 |^ b4 in b2
proof end;

theorem Th23: :: GROUP_8:23
for b1 being strict Group st b1 <> (1). b1 holds
ex b2 being Element of b1 st b2 <> 1. b1
proof end;

theorem Th24: :: GROUP_8:24
for b1 being strict Group
for b2 being Element of b1 st b1 = gr {b2} & b1 <> (1). b1 holds
for b3 being strict Subgroup of b1 st b3 <> (1). b1 holds
ex b4 being Nat st
( 0 < b4 & b2 |^ b4 in b3 )
proof end;

theorem Th25: :: GROUP_8:25
for b1 being strict cyclic Group st b1 <> (1). b1 holds
for b2 being strict Subgroup of b1 st b2 <> (1). b1 holds
b2 is cyclic Group
proof end;