:: GROUP_7 semantic presentation

theorem Th1: :: GROUP_7:1
for b1, b2 being set st <*b1*> = <*b2*> holds
b1 = b2
proof end;

theorem Th2: :: GROUP_7:2
for b1, b2, b3, b4 being set st <*b1,b2*> = <*b3,b4*> holds
( b1 = b3 & b2 = b4 )
proof end;

theorem Th3: :: GROUP_7:3
for b1, b2, b3, b4, b5, b6 being set st <*b1,b2,b3*> = <*b4,b5,b6*> holds
( b1 = b4 & b2 = b5 & b3 = b6 )
proof end;

definition
let c1 be Relation;
attr a1 is HGrStr-yielding means :Def1: :: GROUP_7:def 1
for b1 being set st b1 in rng a1 holds
b1 is non empty HGrStr ;
end;

:: deftheorem Def1 defines HGrStr-yielding GROUP_7:def 1 :
for b1 being Relation holds
( b1 is HGrStr-yielding iff for b2 being set st b2 in rng b1 holds
b2 is non empty HGrStr );

registration
cluster HGrStr-yielding -> 1-sorted-yielding set ;
coherence
for b1 being Function st b1 is HGrStr-yielding holds
b1 is 1-sorted-yielding
proof end;
end;

registration
let c1 be set ;
cluster 1-sorted-yielding HGrStr-yielding ManySortedSet of a1;
existence
ex b1 being ManySortedSet of c1 st b1 is HGrStr-yielding
proof end;
end;

registration
cluster 1-sorted-yielding HGrStr-yielding set ;
existence
ex b1 being Function st b1 is HGrStr-yielding
proof end;
end;

definition
let c1 be set ;
mode HGrStr-Family of a1 is HGrStr-yielding ManySortedSet of a1;
end;

definition
let c1 be non empty set ;
let c2 be HGrStr-Family of c1;
let c3 be Element of c1;
redefine func . as c2 . c3 -> non empty HGrStr ;
coherence
c2 . c3 is non empty HGrStr
proof end;
end;

registration
let c1 be set ;
let c2 be HGrStr-Family of c1;
cluster Carrier a2 -> V2 ;
coherence
Carrier c2 is non-empty
proof end;
end;

E3: now
let c1 be non empty set ;
let c2 be Element of c1;
let c3 be HGrStr-yielding ManySortedSet of c1;
let c4 be Element of product (Carrier c3);
E4: ex b1 being 1-sorted st
( b1 = c3 . c2 & (Carrier c3) . c2 = the carrier of b1 ) by PRALG_1:def 13;
dom (Carrier c3) = c1 by PBOOLE:def 3;
hence c4 . c2 in the carrier of (c3 . c2) by E4, CARD_3:18;
end;

definition
let c1 be set ;
let c2 be HGrStr-Family of c1;
func product c2 -> strict HGrStr means :Def2: :: GROUP_7:def 2
( the carrier of a3 = product (Carrier a2) & ( for b1, b2 being Element of product (Carrier a2)
for b3 being set st b3 in a1 holds
ex b4 being non empty HGrStr ex b5 being Function st
( b4 = a2 . b3 & b5 = the mult of a3 . b1,b2 & b5 . b3 = the mult of b4 . (b1 . b3),(b2 . b3) ) ) );
existence
ex b1 being strict HGrStr st
( the carrier of b1 = product (Carrier c2) & ( for b2, b3 being Element of product (Carrier c2)
for b4 being set st b4 in c1 holds
ex b5 being non empty HGrStr ex b6 being Function st
( b5 = c2 . b4 & b6 = the mult of b1 . b2,b3 & b6 . b4 = the mult of b5 . (b2 . b4),(b3 . b4) ) ) )
proof end;
uniqueness
for b1, b2 being strict HGrStr st the carrier of b1 = product (Carrier c2) & ( for b3, b4 being Element of product (Carrier c2)
for b5 being set st b5 in c1 holds
ex b6 being non empty HGrStr ex b7 being Function st
( b6 = c2 . b5 & b7 = the mult of b1 . b3,b4 & b7 . b5 = the mult of b6 . (b3 . b5),(b4 . b5) ) ) & the carrier of b2 = product (Carrier c2) & ( for b3, b4 being Element of product (Carrier c2)
for b5 being set st b5 in c1 holds
ex b6 being non empty HGrStr ex b7 being Function st
( b6 = c2 . b5 & b7 = the mult of b2 . b3,b4 & b7 . b5 = the mult of b6 . (b3 . b5),(b4 . b5) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines product GROUP_7:def 2 :
for b1 being set
for b2 being HGrStr-Family of b1
for b3 being strict HGrStr holds
( b3 = product b2 iff ( the carrier of b3 = product (Carrier b2) & ( for b4, b5 being Element of product (Carrier b2)
for b6 being set st b6 in b1 holds
ex b7 being non empty HGrStr ex b8 being Function st
( b7 = b2 . b6 & b8 = the mult of b3 . b4,b5 & b8 . b6 = the mult of b7 . (b4 . b6),(b5 . b6) ) ) ) );

registration
let c1 be set ;
let c2 be HGrStr-Family of c1;
cluster product a2 -> non empty strict constituted-Functions ;
coherence
( not product c2 is empty & product c2 is constituted-Functions )
proof end;
end;

theorem Th4: :: GROUP_7:4
for b1, b2 being set
for b3, b4, b5 being Function
for b6 being HGrStr-Family of b1
for b7 being non empty HGrStr
for b8, b9 being Element of (product b6)
for b10, b11 being Element of b7 st b2 in b1 & b7 = b6 . b2 & b3 = b8 & b4 = b9 & b5 = b8 * b9 & b3 . b2 = b10 & b4 . b2 = b11 holds
b10 * b11 = b5 . b2
proof end;

definition
let c1 be set ;
let c2 be HGrStr-Family of c1;
attr a2 is Group-like means :Def3: :: GROUP_7:def 3
for b1 being set st b1 in a1 holds
ex b2 being non empty Group-like HGrStr st b2 = a2 . b1;
attr a2 is associative means :Def4: :: GROUP_7:def 4
for b1 being set st b1 in a1 holds
ex b2 being non empty associative HGrStr st b2 = a2 . b1;
attr a2 is commutative means :Def5: :: GROUP_7:def 5
for b1 being set st b1 in a1 holds
ex b2 being non empty commutative HGrStr st b2 = a2 . b1;
end;

:: deftheorem Def3 defines Group-like GROUP_7:def 3 :
for b1 being set
for b2 being HGrStr-Family of b1 holds
( b2 is Group-like iff for b3 being set st b3 in b1 holds
ex b4 being non empty Group-like HGrStr st b4 = b2 . b3 );

:: deftheorem Def4 defines associative GROUP_7:def 4 :
for b1 being set
for b2 being HGrStr-Family of b1 holds
( b2 is associative iff for b3 being set st b3 in b1 holds
ex b4 being non empty associative HGrStr st b4 = b2 . b3 );

:: deftheorem Def5 defines commutative GROUP_7:def 5 :
for b1 being set
for b2 being HGrStr-Family of b1 holds
( b2 is commutative iff for b3 being set st b3 in b1 holds
ex b4 being non empty commutative HGrStr st b4 = b2 . b3 );

definition
let c1 be non empty set ;
let c2 be HGrStr-Family of c1;
redefine attr a2 is Group-like means :Def6: :: GROUP_7:def 6
for b1 being Element of a1 holds a2 . b1 is Group-like;
compatibility
( c2 is Group-like iff for b1 being Element of c1 holds c2 . b1 is Group-like )
proof end;
redefine attr a2 is associative means :Def7: :: GROUP_7:def 7
for b1 being Element of a1 holds a2 . b1 is associative;
compatibility
( c2 is associative iff for b1 being Element of c1 holds c2 . b1 is associative )
proof end;
redefine attr a2 is commutative means :: GROUP_7:def 8
for b1 being Element of a1 holds a2 . b1 is commutative;
compatibility
( c2 is commutative iff for b1 being Element of c1 holds c2 . b1 is commutative )
proof end;
end;

:: deftheorem Def6 defines Group-like GROUP_7:def 6 :
for b1 being non empty set
for b2 being HGrStr-Family of b1 holds
( b2 is Group-like iff for b3 being Element of b1 holds b2 . b3 is Group-like );

:: deftheorem Def7 defines associative GROUP_7:def 7 :
for b1 being non empty set
for b2 being HGrStr-Family of b1 holds
( b2 is associative iff for b3 being Element of b1 holds b2 . b3 is associative );

:: deftheorem Def8 defines commutative GROUP_7:def 8 :
for b1 being non empty set
for b2 being HGrStr-Family of b1 holds
( b2 is commutative iff for b3 being Element of b1 holds b2 . b3 is commutative );

registration
let c1 be set ;
cluster Group-like associative commutative ManySortedSet of a1;
existence
ex b1 being HGrStr-Family of c1 st
( b1 is Group-like & b1 is associative & b1 is commutative )
proof end;
end;

registration
let c1 be set ;
let c2 be Group-like HGrStr-Family of c1;
cluster product a2 -> non empty strict Group-like constituted-Functions ;
coherence
product c2 is Group-like
proof end;
end;

registration
let c1 be set ;
let c2 be associative HGrStr-Family of c1;
cluster product a2 -> non empty strict associative constituted-Functions ;
coherence
product c2 is associative
proof end;
end;

registration
let c1 be set ;
let c2 be commutative HGrStr-Family of c1;
cluster product a2 -> non empty strict commutative constituted-Functions ;
coherence
product c2 is commutative
proof end;
end;

theorem Th5: :: GROUP_7:5
for b1, b2 being set
for b3 being HGrStr-Family of b1
for b4 being non empty HGrStr st b2 in b1 & b4 = b3 . b2 & product b3 is Group-like holds
b4 is Group-like
proof end;

theorem Th6: :: GROUP_7:6
for b1, b2 being set
for b3 being HGrStr-Family of b1
for b4 being non empty HGrStr st b2 in b1 & b4 = b3 . b2 & product b3 is associative holds
b4 is associative
proof end;

theorem Th7: :: GROUP_7:7
for b1, b2 being set
for b3 being HGrStr-Family of b1
for b4 being non empty HGrStr st b2 in b1 & b4 = b3 . b2 & product b3 is commutative holds
b4 is commutative
proof end;

theorem Th8: :: GROUP_7:8
for b1 being set
for b2 being ManySortedSet of b1
for b3 being Group-like HGrStr-Family of b1 st ( for b4 being set st b4 in b1 holds
ex b5 being non empty Group-like HGrStr st
( b5 = b3 . b4 & b2 . b4 = 1. b5 ) ) holds
b2 = 1. (product b3)
proof end;

theorem Th9: :: GROUP_7:9
for b1, b2 being set
for b3 being Function
for b4 being Group-like HGrStr-Family of b1
for b5 being non empty Group-like HGrStr st b2 in b1 & b5 = b4 . b2 & b3 = 1. (product b4) holds
b3 . b2 = 1. b5
proof end;

theorem Th10: :: GROUP_7:10
for b1 being set
for b2 being Function
for b3 being ManySortedSet of b1
for b4 being Group-like associative HGrStr-Family of b1
for b5 being Element of (product b4) st b5 = b2 & ( for b6 being set st b6 in b1 holds
ex b7 being Groupex b8 being Element of b7 st
( b7 = b4 . b6 & b3 . b6 = b8 " & b8 = b2 . b6 ) ) holds
b3 = b5 "
proof end;

theorem Th11: :: GROUP_7:11
for b1, b2 being set
for b3, b4 being Function
for b5 being Group-like associative HGrStr-Family of b1
for b6 being Element of (product b5)
for b7 being Group
for b8 being Element of b7 st b2 in b1 & b7 = b5 . b2 & b3 = b6 & b4 = b6 " & b3 . b2 = b8 holds
b4 . b2 = b8 "
proof end;

definition
let c1 be set ;
let c2 be Group-like associative HGrStr-Family of c1;
func sum c2 -> strict Subgroup of product a2 means :Def9: :: GROUP_7:def 9
for b1 being set holds
( b1 in the carrier of a3 iff ex b2 being Element of product (Carrier a2)ex b3 being finite Subset of a1ex b4 being ManySortedSet of b3 st
( b2 = 1. (product a2) & b1 = b2 +* b4 & ( for b5 being set st b5 in b3 holds
ex b6 being non empty Group-like HGrStr st
( b6 = a2 . b5 & b4 . b5 in the carrier of b6 & b4 . b5 <> 1. b6 ) ) ) );
existence
ex b1 being strict Subgroup of product c2 st
for b2 being set holds
( b2 in the carrier of b1 iff ex b3 being Element of product (Carrier c2)ex b4 being finite Subset of c1ex b5 being ManySortedSet of b4 st
( b3 = 1. (product c2) & b2 = b3 +* b5 & ( for b6 being set st b6 in b4 holds
ex b7 being non empty Group-like HGrStr st
( b7 = c2 . b6 & b5 . b6 in the carrier of b7 & b5 . b6 <> 1. b7 ) ) ) )
proof end;
uniqueness
for b1, b2 being strict Subgroup of product c2 st ( for b3 being set holds
( b3 in the carrier of b1 iff ex b4 being Element of product (Carrier c2)ex b5 being finite Subset of c1ex b6 being ManySortedSet of b5 st
( b4 = 1. (product c2) & b3 = b4 +* b6 & ( for b7 being set st b7 in b5 holds
ex b8 being non empty Group-like HGrStr st
( b8 = c2 . b7 & b6 . b7 in the carrier of b8 & b6 . b7 <> 1. b8 ) ) ) ) ) & ( for b3 being set holds
( b3 in the carrier of b2 iff ex b4 being Element of product (Carrier c2)ex b5 being finite Subset of c1ex b6 being ManySortedSet of b5 st
( b4 = 1. (product c2) & b3 = b4 +* b6 & ( for b7 being set st b7 in b5 holds
ex b8 being non empty Group-like HGrStr st
( b8 = c2 . b7 & b6 . b7 in the carrier of b8 & b6 . b7 <> 1. b8 ) ) ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines sum GROUP_7:def 9 :
for b1 being set
for b2 being Group-like associative HGrStr-Family of b1
for b3 being strict Subgroup of product b2 holds
( b3 = sum b2 iff for b4 being set holds
( b4 in the carrier of b3 iff ex b5 being Element of product (Carrier b2)ex b6 being finite Subset of b1ex b7 being ManySortedSet of b6 st
( b5 = 1. (product b2) & b4 = b5 +* b7 & ( for b8 being set st b8 in b6 holds
ex b9 being non empty Group-like HGrStr st
( b9 = b2 . b8 & b7 . b8 in the carrier of b9 & b7 . b8 <> 1. b9 ) ) ) ) );

registration
let c1 be set ;
let c2 be Group-like associative HGrStr-Family of c1;
let c3, c4 be Element of (sum c2);
cluster the mult of (sum a2) . a3,a4 -> Relation-like Function-like ;
coherence
( the mult of (sum c2) . c3,c4 is Function-like & the mult of (sum c2) . c3,c4 is Relation-like )
proof end;
end;

theorem Th12: :: GROUP_7:12
for b1 being finite set
for b2 being Group-like associative HGrStr-Family of b1 holds product b2 = sum b2
proof end;

theorem Th13: :: GROUP_7:13
for b1 being non empty HGrStr holds <*b1*> is HGrStr-Family of {1}
proof end;

definition
let c1 be non empty HGrStr ;
redefine func <* as <*c1*> -> HGrStr-Family of {1};
coherence
<*c1*> is HGrStr-Family of {1}
by Th13;
end;

theorem Th14: :: GROUP_7:14
for b1 being non empty Group-like HGrStr holds <*b1*> is Group-like HGrStr-Family of {1}
proof end;

definition
let c1 be non empty Group-like HGrStr ;
redefine func <* as <*c1*> -> Group-like HGrStr-Family of {1};
coherence
<*c1*> is Group-like HGrStr-Family of {1}
by Th14;
end;

theorem Th15: :: GROUP_7:15
for b1 being non empty associative HGrStr holds <*b1*> is associative HGrStr-Family of {1}
proof end;

definition
let c1 be non empty associative HGrStr ;
redefine func <* as <*c1*> -> associative HGrStr-Family of {1};
coherence
<*c1*> is associative HGrStr-Family of {1}
by Th15;
end;

theorem Th16: :: GROUP_7:16
for b1 being non empty commutative HGrStr holds <*b1*> is commutative HGrStr-Family of {1}
proof end;

definition
let c1 be non empty commutative HGrStr ;
redefine func <* as <*c1*> -> commutative HGrStr-Family of {1};
coherence
<*c1*> is commutative HGrStr-Family of {1}
by Th16;
end;

theorem Th17: :: GROUP_7:17
for b1 being Group holds <*b1*> is Group-like associative HGrStr-Family of {1}
proof end;

definition
let c1 be Group;
redefine func <* as <*c1*> -> Group-like associative HGrStr-Family of {1};
coherence
<*c1*> is Group-like associative HGrStr-Family of {1}
by Th17;
end;

theorem Th18: :: GROUP_7:18
for b1 being commutative Group holds <*b1*> is Group-like associative commutative HGrStr-Family of {1}
proof end;

definition
let c1 be commutative Group;
redefine func <* as <*c1*> -> Group-like associative commutative HGrStr-Family of {1};
coherence
<*c1*> is Group-like associative commutative HGrStr-Family of {1}
by Th18;
end;

registration
let c1 be non empty HGrStr ;
cluster -> FinSequence-like Element of product (Carrier <*a1*>);
coherence
for b1 being Element of product (Carrier <*c1*>) holds b1 is FinSequence-like
proof end;
end;

registration
let c1 be non empty HGrStr ;
cluster -> FinSequence-like Element of the carrier of (product <*a1*>);
coherence
for b1 being Element of (product <*c1*>) holds b1 is FinSequence-like
proof end;
end;

definition
let c1 be non empty HGrStr ;
let c2 be Element of c1;
redefine func <* as <*c2*> -> Element of (product <*a1*>);
coherence
<*c2*> is Element of (product <*c1*>)
proof end;
end;

theorem Th19: :: GROUP_7:19
for b1, b2 being non empty HGrStr holds <*b1,b2*> is HGrStr-Family of {1,2}
proof end;

definition
let c1, c2 be non empty HGrStr ;
redefine func <* as <*c1,c2*> -> HGrStr-Family of {1,2};
coherence
<*c1,c2*> is HGrStr-Family of {1,2}
by Th19;
end;

theorem Th20: :: GROUP_7:20
for b1, b2 being non empty Group-like HGrStr holds <*b1,b2*> is Group-like HGrStr-Family of {1,2}
proof end;

definition
let c1, c2 be non empty Group-like HGrStr ;
redefine func <* as <*c1,c2*> -> Group-like HGrStr-Family of {1,2};
coherence
<*c1,c2*> is Group-like HGrStr-Family of {1,2}
by Th20;
end;

theorem Th21: :: GROUP_7:21
for b1, b2 being non empty associative HGrStr holds <*b1,b2*> is associative HGrStr-Family of {1,2}
proof end;

definition
let c1, c2 be non empty associative HGrStr ;
redefine func <* as <*c1,c2*> -> associative HGrStr-Family of {1,2};
coherence
<*c1,c2*> is associative HGrStr-Family of {1,2}
by Th21;
end;

theorem Th22: :: GROUP_7:22
for b1, b2 being non empty commutative HGrStr holds <*b1,b2*> is commutative HGrStr-Family of {1,2}
proof end;

definition
let c1, c2 be non empty commutative HGrStr ;
redefine func <* as <*c1,c2*> -> commutative HGrStr-Family of {1,2};
coherence
<*c1,c2*> is commutative HGrStr-Family of {1,2}
by Th22;
end;

theorem Th23: :: GROUP_7:23
for b1, b2 being Group holds <*b1,b2*> is Group-like associative HGrStr-Family of {1,2}
proof end;

definition
let c1, c2 be Group;
redefine func <* as <*c1,c2*> -> Group-like associative HGrStr-Family of {1,2};
coherence
<*c1,c2*> is Group-like associative HGrStr-Family of {1,2}
by Th23;
end;

theorem Th24: :: GROUP_7:24
for b1, b2 being commutative Group holds <*b1,b2*> is Group-like associative commutative HGrStr-Family of {1,2}
proof end;

definition
let c1, c2 be commutative Group;
redefine func <* as <*c1,c2*> -> Group-like associative commutative HGrStr-Family of {1,2};
coherence
<*c1,c2*> is Group-like associative commutative HGrStr-Family of {1,2}
by Th24;
end;

registration
let c1, c2 be non empty HGrStr ;
cluster -> FinSequence-like Element of product (Carrier <*a1,a2*>);
coherence
for b1 being Element of product (Carrier <*c1,c2*>) holds b1 is FinSequence-like
proof end;
end;

registration
let c1, c2 be non empty HGrStr ;
cluster -> FinSequence-like Element of the carrier of (product <*a1,a2*>);
coherence
for b1 being Element of (product <*c1,c2*>) holds b1 is FinSequence-like
proof end;
end;

definition
let c1, c2 be non empty HGrStr ;
let c3 be Element of c1;
let c4 be Element of c2;
redefine func <* as <*c3,c4*> -> Element of (product <*a1,a2*>);
coherence
<*c3,c4*> is Element of (product <*c1,c2*>)
proof end;
end;

theorem Th25: :: GROUP_7:25
for b1, b2, b3 being non empty HGrStr holds <*b1,b2,b3*> is HGrStr-Family of {1,2,3}
proof end;

definition
let c1, c2, c3 be non empty HGrStr ;
redefine func <* as <*c1,c2,c3*> -> HGrStr-Family of {1,2,3};
coherence
<*c1,c2,c3*> is HGrStr-Family of {1,2,3}
by Th25;
end;

theorem Th26: :: GROUP_7:26
for b1, b2, b3 being non empty Group-like HGrStr holds <*b1,b2,b3*> is Group-like HGrStr-Family of {1,2,3}
proof end;

definition
let c1, c2, c3 be non empty Group-like HGrStr ;
redefine func <* as <*c1,c2,c3*> -> Group-like HGrStr-Family of {1,2,3};
coherence
<*c1,c2,c3*> is Group-like HGrStr-Family of {1,2,3}
by Th26;
end;

theorem Th27: :: GROUP_7:27
for b1, b2, b3 being non empty associative HGrStr holds <*b1,b2,b3*> is associative HGrStr-Family of {1,2,3}
proof end;

definition
let c1, c2, c3 be non empty associative HGrStr ;
redefine func <* as <*c1,c2,c3*> -> associative HGrStr-Family of {1,2,3};
coherence
<*c1,c2,c3*> is associative HGrStr-Family of {1,2,3}
by Th27;
end;

theorem Th28: :: GROUP_7:28
for b1, b2, b3 being non empty commutative HGrStr holds <*b1,b2,b3*> is commutative HGrStr-Family of {1,2,3}
proof end;

definition
let c1, c2, c3 be non empty commutative HGrStr ;
redefine func <* as <*c1,c2,c3*> -> commutative HGrStr-Family of {1,2,3};
coherence
<*c1,c2,c3*> is commutative HGrStr-Family of {1,2,3}
by Th28;
end;

theorem Th29: :: GROUP_7:29
for b1, b2, b3 being Group holds <*b1,b2,b3*> is Group-like associative HGrStr-Family of {1,2,3}
proof end;

definition
let c1, c2, c3 be Group;
redefine func <* as <*c1,c2,c3*> -> Group-like associative HGrStr-Family of {1,2,3};
coherence
<*c1,c2,c3*> is Group-like associative HGrStr-Family of {1,2,3}
by Th29;
end;

theorem Th30: :: GROUP_7:30
for b1, b2, b3 being commutative Group holds <*b1,b2,b3*> is Group-like associative commutative HGrStr-Family of {1,2,3}
proof end;

definition
let c1, c2, c3 be commutative Group;
redefine func <* as <*c1,c2,c3*> -> Group-like associative commutative HGrStr-Family of {1,2,3};
coherence
<*c1,c2,c3*> is Group-like associative commutative HGrStr-Family of {1,2,3}
by Th30;
end;

registration
let c1, c2, c3 be non empty HGrStr ;
cluster -> FinSequence-like Element of product (Carrier <*a1,a2,a3*>);
coherence
for b1 being Element of product (Carrier <*c1,c2,c3*>) holds b1 is FinSequence-like
proof end;
end;

registration
let c1, c2, c3 be non empty HGrStr ;
cluster -> FinSequence-like Element of the carrier of (product <*a1,a2,a3*>);
coherence
for b1 being Element of (product <*c1,c2,c3*>) holds b1 is FinSequence-like
proof end;
end;

definition
let c1, c2, c3 be non empty HGrStr ;
let c4 be Element of c1;
let c5 be Element of c2;
let c6 be Element of c3;
redefine func <* as <*c4,c5,c6*> -> Element of (product <*a1,a2,a3*>);
coherence
<*c4,c5,c6*> is Element of (product <*c1,c2,c3*>)
proof end;
end;

theorem Th31: :: GROUP_7:31
for b1 being non empty HGrStr
for b2, b3 being Element of b1 holds <*b2*> * <*b3*> = <*(b2 * b3)*>
proof end;

theorem Th32: :: GROUP_7:32
for b1, b2 being non empty HGrStr
for b3, b4 being Element of b1
for b5, b6 being Element of b2 holds <*b3,b5*> * <*b4,b6*> = <*(b3 * b4),(b5 * b6)*>
proof end;

theorem Th33: :: GROUP_7:33
for b1, b2, b3 being non empty HGrStr
for b4, b5 being Element of b1
for b6, b7 being Element of b2
for b8, b9 being Element of b3 holds <*b4,b6,b8*> * <*b5,b7,b9*> = <*(b4 * b5),(b6 * b7),(b8 * b9)*>
proof end;

theorem Th34: :: GROUP_7:34
for b1 being non empty Group-like HGrStr holds 1. (product <*b1*>) = <*(1. b1)*>
proof end;

theorem Th35: :: GROUP_7:35
for b1, b2 being non empty Group-like HGrStr holds 1. (product <*b1,b2*>) = <*(1. b1),(1. b2)*>
proof end;

theorem Th36: :: GROUP_7:36
for b1, b2, b3 being non empty Group-like HGrStr holds 1. (product <*b1,b2,b3*>) = <*(1. b1),(1. b2),(1. b3)*>
proof end;

theorem Th37: :: GROUP_7:37
for b1 being Group
for b2 being Element of b1 holds <*b2*> " = <*(b2 " )*>
proof end;

theorem Th38: :: GROUP_7:38
for b1, b2 being Group
for b3 being Element of b1
for b4 being Element of b2 holds <*b3,b4*> " = <*(b3 " ),(b4 " )*>
proof end;

theorem Th39: :: GROUP_7:39
for b1, b2, b3 being Group
for b4 being Element of b1
for b5 being Element of b2
for b6 being Element of b3 holds <*b4,b5,b6*> " = <*(b4 " ),(b5 " ),(b6 " )*>
proof end;

theorem Th40: :: GROUP_7:40
for b1 being Group
for b2 being Function of the carrier of b1,the carrier of (product <*b1*>) st ( for b3 being Element of b1 holds b2 . b3 = <*b3*> ) holds
b2 is Homomorphism of b1,(product <*b1*>)
proof end;

theorem Th41: :: GROUP_7:41
for b1 being Group
for b2 being Homomorphism of b1,(product <*b1*>) st ( for b3 being Element of b1 holds b2 . b3 = <*b3*> ) holds
b2 is_isomorphism
proof end;

theorem Th42: :: GROUP_7:42
for b1 being Group holds b1, product <*b1*> are_isomorphic
proof end;