reserve R,R1 for commutative Ring;
reserve A,B for non degenerated commutative Ring;
reserve o,o1,o2 for object;
reserve r,r1,r2 for Element of R;
reserve a,a1,a2,b,b1 for Element of A;
reserve f for Function of R, R1;
reserve p for Element of Spectrum A;
reserve S for non empty multiplicatively-closed Subset of R;
reserve u,v,w,x,y,z for Element of Frac(S);
reserve a, b, c for Element of Frac(S);
reserve x, y, z for Element of S~R;
reserve S for without_zero non empty multiplicatively-closed Subset of A;
reserve p for Element of Spectrum A;
reserve a,m,n for Element of A~p;
reserve f for Function of A,B;

theorem Th57:
  f is RingHomomorphism & f.:S c= Unit_Set(B) implies
    Univ_Map(S,f) is additive
   proof
     set F = Univ_Map(S,f);
     assume
A1:  f is RingHomomorphism & f.:S c= Unit_Set(B);
     for x,y being Element of S~A holds
     (Univ_Map(S,f)).(x+y) = (Univ_Map(S,f)).x + (Univ_Map(S,f)).y
     proof
       let x,y be Element of S~A;
       consider a1,s1 being Element of A such that
A3:    s1 in S and
A4:    x = Class(EqRel(S),[a1,s1]) and
A5:    F.x = (f.a1)*((f.s1)["]) by A1,Def8;
       consider a2,s2 being Element of A such that
A6:    s2 in S and
A7:    y = Class(EqRel(S),[a2,s2]) and
A8:    F.y = (f.a2)*((f.s2)["]) by A1,Def8;
       reconsider as1 = [a1,s1] as Element of Frac(S) by A3,Def3;
       reconsider as2 = [a2,s2] as Element of Frac(S) by A6,Def3;
       reconsider z = x + y as Element of S~A;
       consider a3,s3 being Element of A such that
A9:    s3 in S and
A10:   z = Class(EqRel(S),[a3,s3]) and
A11:   F.z = (f.a3)*((f.s3)["]) by A1,Def8;
       reconsider as3 = [a3,s3] as Element of Frac(S) by A9,Def3;
       Class(EqRel(S),as3) = Class(EqRel(S),as1+as2) by Th35,A4,A7,A10; then
       as3, as1+as2 Fr_Eq S by Th26; then
       consider s0 being Element of A such that
A14:   s0 in S and
A15:   (as3`1 * (as1+as2)`2 - (as1+as2)`1 * as3`2) * s0 = 0.A;
A16:   0.B = f.(0.A) by A1,QUOFIELD:50
       .= f.((a3 * (s1*s2) - (a1*s2+a2*s1)*s3))*f.s0 by A1,A15,GROUP_6:def 6;
       f.s0 is Unit of B by A1,A14,Th56; then
A17:   f.s0 in Unit_Set(B);
       f.s1 is Unit of B by A1,A3,Th56; then
A18:   f.s1 in Unit_Set(B);
       f.s2 is Unit of B by A1,A6,Th56; then
A19:   f.s2 in Unit_Set(B);
       f.s3 is Unit of B by A1,A9,Th56; then
A20:   f.s3 in Unit_Set(B);
A21:   0.B = (f.((a3*(s1*s2) - (a1*s2+a2*s1)*s3))*f.s0)*((f.s0)["]) by A16
       .= (f.((a3*(s1*s2) - (a1*s2+a2*s1)*s3)))*(f.s0*((f.s0)["]))
        by GROUP_1:def 3
       .= (f.((a3*(s1*s2) - (a1*s2+a2*s1)*s3)))*(1.B) by A17,Def2
       .= f.(a3*(s1*s2)) - f.((a1*s2+a2*s1)*s3) by A1,RING_2:8;
       f.a3*(f.s1*f.s2) = f.a3*f.(s1*s2) by A1,GROUP_6:def 6
       .= f.(a3*(s1*s2)) by A1,GROUP_6:def 6
       .= f.((a1*s2+a2*s1)*s3) by A21, VECTSP_1:27
       .= f.(a1*s2+a2*s1)*f.s3 by A1,GROUP_6:def 6; then
A23:   (f.a3*((f.s3)["]))*(f.s1*f.s2)
        = (f.(a1*s2+a2*s1)*f.s3)*((f.s3)["]) by GROUP_1:def 3
       .= f.(a1*s2+a2*s1)*((f.s3)*((f.s3)["])) by GROUP_1:def 3
       .= f.(a1*s2+a2*s1)*1.B by A20,Def2
       .= f.(a1*s2)+f.(a2*s1) by A1,VECTSP_1:def 20;
       reconsider fa1 = f.a1, fa2 = f.a2, fa3 = f.a3 as Element of B;
       reconsider fs1 = f.s1, fs2 = f.s2, fs3 = f.s3 as Element of B;
A24:   fa3*(fs3["])*fs1 = (fa3*(fs3["])*fs1)*1.B
       .= (fa3*(fs3["])*fs1)*(fs2*(fs2["])) by A19,Def2
       .= (fa3*(fs3["])*fs1)*fs2*(fs2["]) by GROUP_1:def 3
       .= (f.(a1*s2)+f.(a2*s1))*((f.s2)["]) by A23,GROUP_1:def 3
       .= (f.a1*f.s2+f.(a2*s1))*((f.s2)["]) by A1,GROUP_6:def 6
       .= (fa1*fs2+fa2*fs1)*(fs2["]) by A1,GROUP_6:def 6
       .= (fa1*fs2)*(fs2["])+(fa2*fs1)*(fs2["]) by VECTSP_1:def 3
       .= (fa1*(fs2*(fs2["])))+(fa2*fs1)*(fs2["]) by GROUP_1:def 3
       .= (fa1*(1.B))+(fa2*fs1)*(fs2["]) by A19,Def2
       .= fa1 + (fa2*(fs2["]))*fs1 by GROUP_1:def 3;
       Univ_Map(S,f).(x+y) = (fa3*(fs3["]))*1.B by A11
       .= (fa3*(fs3["]))*(fs1*(fs1["])) by A18,Def2
       .= (fa1 + (fa2*(fs2["]))*fs1)*(fs1["]) by A24,GROUP_1:def 3
       .= fa1*(fs1["]) + (fa2*(fs2["]))*fs1*(fs1["]) by VECTSP_1:def 3
       .= fa1*(fs1["]) + fa2*(fs2["])*(fs1*(fs1["])) by GROUP_1:def 3
       .= fa1*(fs1["]) + fa2*(fs2["])*(1.B) by A18,Def2
       .= Univ_Map(S,f).x + Univ_Map(S,f).y by A5,A8;
       hence thesis;
     end;
     hence thesis;
   end;
