Lm1: 
 for G being   non  empty   doubleLoopStr  holds   id G is  linear 
 
Lm2: 
 for F being   RingMorphism holds   RingMorphismStr(#  the Dom of F, the Cod of F, the Fun of F #) is  RingMorphism-like 
 
Lm3: 
 for F being   RingMorphism holds   the Fun of F is  linear 
 
Lm4: 
 for G, H being   Ring
  for f being   strict   RingMorphismStr   st  dom f = G &  cod f = H &  fun f is  linear  holds 
f is    Morphism of G,H
 
Lm5: 
 for G, H being   Ring
  for f being   Function of G,H  st f is  linear  holds 
 RingMorphismStr(# G,H,f #) is    Morphism of G,H
 
Lm6: 
 for F being   RingMorphism  ex G, H being   Ring st 
( G <= H &  dom F = G &  cod F = H &  RingMorphismStr(#  the Dom of F, the Cod of F, the Fun of F #) is    Morphism of G,H )
 
Lm7: 
 for G, H being   Ring
  for F being    Morphism of G,H  st G <= H holds 
 ex f being   Function of G,H st 
( F =  RingMorphismStr(# G,H,f #) & f is  linear  )
 
Lm8: 
 for G, H being   Ring
  for F being    Morphism of G,H  st G <= H holds 
 ex f being   Function of G,H st F =  RingMorphismStr(# G,H,f #)
 
definition
let G, 
F be   
RingMorphism;
assume A1: 
 
dom G =  cod F
 ;
func G * F ->   strict  RingMorphism means :
Def9: 
 for 
G1, 
G2, 
G3 being   
Ring  for 
g being   
Function of 
G2,
G3  for 
f being   
Function of 
G1,
G2  st  
RingMorphismStr(#  the 
Dom of 
G, the 
Cod of 
G, the 
Fun of 
G #) 
=  RingMorphismStr(# 
G2,
G3,
g #) &  
RingMorphismStr(#  the 
Dom of 
F, the 
Cod of 
F, the 
Fun of 
F #) 
=  RingMorphismStr(# 
G1,
G2,
f #) holds 
it =  RingMorphismStr(# 
G1,
G3,
(g * f) #);
 
existence 
 ex b1 being   strict  RingMorphism st 
 for G1, G2, G3 being   Ring
  for g being   Function of G2,G3
  for f being   Function of G1,G2  st  RingMorphismStr(#  the Dom of G, the Cod of G, the Fun of G #) =  RingMorphismStr(# G2,G3,g #) &  RingMorphismStr(#  the Dom of F, the Cod of F, the Fun of F #) =  RingMorphismStr(# G1,G2,f #) holds 
b1 =  RingMorphismStr(# G1,G3,(g * f) #)
 
uniqueness 
 for b1, b2 being   strict  RingMorphism  st (  for G1, G2, G3 being   Ring
  for g being   Function of G2,G3
  for f being   Function of G1,G2  st  RingMorphismStr(#  the Dom of G, the Cod of G, the Fun of G #) =  RingMorphismStr(# G2,G3,g #) &  RingMorphismStr(#  the Dom of F, the Cod of F, the Fun of F #) =  RingMorphismStr(# G1,G2,f #) holds 
b1 =  RingMorphismStr(# G1,G3,(g * f) #) ) & (  for G1, G2, G3 being   Ring
  for g being   Function of G2,G3
  for f being   Function of G1,G2  st  RingMorphismStr(#  the Dom of G, the Cod of G, the Fun of G #) =  RingMorphismStr(# G2,G3,g #) &  RingMorphismStr(#  the Dom of F, the Cod of F, the Fun of F #) =  RingMorphismStr(# G1,G2,f #) holds 
b2 =  RingMorphismStr(# G1,G3,(g * f) #) ) holds 
b1 = b2
 
 
end;
 
:: 
deftheorem Def9   defines 
* RINGCAT1:def 9 : 
 for G, F being   RingMorphism  st  dom G =  cod F holds 
 for b3 being   strict  RingMorphism holds 
 ( b3 = G * F iff  for G1, G2, G3 being   Ring
  for g being   Function of G2,G3
  for f being   Function of G1,G2  st  RingMorphismStr(#  the Dom of G, the Cod of G, the Fun of G #) =  RingMorphismStr(# G2,G3,g #) &  RingMorphismStr(#  the Dom of F, the Cod of F, the Fun of F #) =  RingMorphismStr(# G1,G2,f #) holds 
b3 =  RingMorphismStr(# G1,G3,(g * f) #) );
theorem Th5: 
 for 
G1, 
G2, 
G3 being   
Ring  st 
G1 <= G2 & 
G2 <= G3 holds 
G1 <= G3
 
theorem Th7: 
 for 
f, 
g being   
strict  RingMorphism  st  
dom g =  cod f holds 
 ex 
G1, 
G2, 
G3 being   
Ring ex 
f0 being   
Function of 
G1,
G2 ex 
g0 being   
Function of 
G2,
G3 st 
( 
f =  RingMorphismStr(# 
G1,
G2,
f0 #) & 
g =  RingMorphismStr(# 
G2,
G3,
g0 #) & 
g * f =  RingMorphismStr(# 
G1,
G3,
(g0 * f0) #) )
 
definition
let x, 
y be    
object ;
pred  GO x,
y means 
 ex 
x1, 
x2, 
x3, 
x4, 
x5, 
x6 being    
set  st 
( 
x = [[x1,x2,x3,x4],x5,x6] &  ex 
G being   
strict  Ring st 
( 
y = G & 
x1 =  the 
carrier of 
G & 
x2 =  the 
addF of 
G & 
x3 =  comp G & 
x4 =  0. G & 
x5 =  the 
multF of 
G & 
x6 =  1. G ) );
 
 
end;
 
:: 
deftheorem    defines 
GO RINGCAT1:def 15 : 
 for x, y being    object  holds 
 (  GO x,y iff  ex x1, x2, x3, x4, x5, x6 being    set  st 
( x = [[x1,x2,x3,x4],x5,x6] &  ex G being   strict  Ring st 
( y = G & x1 =  the carrier of G & x2 =  the addF of G & x3 =  comp G & x4 =  0. G & x5 =  the multF of G & x6 =  1. G ) ) );
theorem Th15: 
 for 
x, 
y1, 
y2 being    
object   st  
GO x,
y1 &  
GO x,
y2 holds 
y1 = y2
 
definition
let V be   
Ring_DOMAIN;
existence 
 ex b1 being   PartFunc of [:(Morphs V),(Morphs V):],(Morphs V) st 
( (  for g, f being    Element of  Morphs V holds 
 ( [g,f] in  dom b1 iff  dom g =  cod f ) ) & (  for g, f being    Element of  Morphs V  st [g,f] in  dom b1 holds 
b1 . (g,f) = g * f ) )
 
uniqueness 
 for b1, b2 being   PartFunc of [:(Morphs V),(Morphs V):],(Morphs V)  st (  for g, f being    Element of  Morphs V holds 
 ( [g,f] in  dom b1 iff  dom g =  cod f ) ) & (  for g, f being    Element of  Morphs V  st [g,f] in  dom b1 holds 
b1 . (g,f) = g * f ) & (  for g, f being    Element of  Morphs V holds 
 ( [g,f] in  dom b2 iff  dom g =  cod f ) ) & (  for g, f being    Element of  Morphs V  st [g,f] in  dom b2 holds 
b2 . (g,f) = g * f ) holds 
b1 = b2
 
 
end;
 
Lm9: 
 for UN being   Universe
  for f, g being   Morphism of (RingCat UN)  st  dom g =  cod f holds 
(  dom (g (*) f) =  dom f &  cod (g (*) f) =  cod g )
 
Lm10: 
 for UN being   Universe
  for f, g, h being   Morphism of (RingCat UN)  st  dom h =  cod g &  dom g =  cod f holds 
h (*) (g (*) f) = (h (*) g) (*) f
 
Lm11: 
 for UN being   Universe
  for a being   Element of (RingCat UN)
  for aa being    Element of  RingObjects UN  st a = aa holds 
 for i being    Morphism of a,a  st i =  ID aa holds 
 for b being   Element of (RingCat UN) holds 
 ( (  Hom (a,b) <>  {}  implies  for g being    Morphism of a,b holds  g (*) i = g ) & (  Hom (b,a) <>  {}  implies  for f being    Morphism of b,a holds  i (*) f = f ) )
 
 
:: 1a. Maps of the carriers of rings
::