reserve A,B,C for non empty set,
  f for Function of [:A,B:],C;
reserve K for non empty doubleLoopStr;
reserve V for non empty ModuleStr over K;
reserve W for non empty RightModStr over K;
reserve J for Function of K,K;
reserve K,L for Ring;
reserve J for Function of K,L;
reserve x,y for Scalar of K;
reserve K,L for add-associative right_zeroed right_complementable non empty
  doubleLoopStr;
reserve J for Function of K,L;
reserve K for add-associative right_zeroed right_complementable non empty
  doubleLoopStr;
reserve L for add-associative right_zeroed right_complementable well-unital
  non empty doubleLoopStr;
reserve J for Function of K,L;
reserve K for add-associative right_zeroed right_complementable well-unital
  non empty doubleLoopStr;
reserve J for Function of K,K;
reserve G,H for AddGroup;
reserve f for Homomorphism of G,H;
reserve x,y for Element of G;
reserve G,H for AbGroup;
reserve f for Homomorphism of G,H;
reserve x,y for Element of G;
reserve K,L for Ring;
reserve J for Function of K,L;
reserve V for LeftMod of K;
reserve W for LeftMod of L;
reserve J for Function of K,K;
reserve f for Homomorphism of J,V,V;
reserve W for LeftMod of K;

theorem
  for f being Function of V,W holds f is Homomorphism of V,W iff
  (for x, y being Vector of V holds f.(x+y) = f.x+f.y) &
  for a being Scalar of K, x being Vector of V holds f.(a*x) = a*f.x
proof
  let f be Function of V,W;
  set J = id K;
A1: (for a being Scalar of K, x being Vector of V holds f.(a*x) = a*f.x)
    implies
  for a be Scalar of K, x be Vector of V holds f.(a*x) = J.a*f.x;
  now
    assume
A2: for a being Scalar of K, x being Vector of V holds f.(a*x) = J.a*f .x;
    let a be Scalar of K, x be Vector of V;
    J.a = a;
    hence f.(a*x) = a*f.x by A2;
  end;
  hence thesis by A1,Def17;
end;
