definition
let I be    
set ;
let F be   
multMagma-Family of 
I;
existence 
 ex b1 being   strict   multMagma  st 
(  the carrier of b1 =  product (Carrier F) & (  for f, g being    Element of  product (Carrier F)
  for i being    set   st i in I holds 
 ex Fi being   non  empty   multMagma  ex h being   Function st 
( Fi = F . i & h =  the multF of b1 . (f,g) & h . i =  the multF of Fi . ((f . i),(g . i)) ) ) )
 
uniqueness 
 for b1, b2 being   strict   multMagma   st  the carrier of b1 =  product (Carrier F) & (  for f, g being    Element of  product (Carrier F)
  for i being    set   st i in I holds 
 ex Fi being   non  empty   multMagma  ex h being   Function st 
( Fi = F . i & h =  the multF of b1 . (f,g) & h . i =  the multF of Fi . ((f . i),(g . i)) ) ) &  the carrier of b2 =  product (Carrier F) & (  for f, g being    Element of  product (Carrier F)
  for i being    set   st i in I holds 
 ex Fi being   non  empty   multMagma  ex h being   Function st 
( Fi = F . i & h =  the multF of b2 . (f,g) & h . i =  the multF of Fi . ((f . i),(g . i)) ) ) holds 
b1 = b2
 
 
end;
 
definition
let G1, 
G2, 
G3 be   non  
empty   multMagma ;
let x be   
Element of 
G1;
let y be   
Element of 
G2;
let z be   
Element of 
G3;
<*redefine func <*x,y,z*> ->   Element of 
(product <*G1,G2,G3*>);
coherence 
<*x,y,z*> is   Element of (product <*G1,G2,G3*>)
 
 
end;
 
theorem 
 for 
G1, 
G2, 
G3 being   non  
empty   multMagma   for 
x1, 
x2 being   
Element of 
G1  for 
y1, 
y2 being   
Element of 
G2  for 
z1, 
z2 being   
Element of 
G3 holds  
<*x1,y1,z1*> * <*x2,y2,z2*> = <*(x1 * x2),(y1 * y2),(z1 * z2)*>