reserve Q,Q1,Q2 for multLoop;
reserve x,y,z,w,u,v for Element of Q;

theorem Th16:
  for Q1 being
    satisfying_aa1 satisfying_aa2 satisfying_aa3
    satisfying_aK1 satisfying_aK2 satisfying_aK3 multLoop
  holds
  for Q2 be multLoop holds
  for f being homomorphic Function of Q1,Q2 st
  (for y be Element of Q2 holds ex x being Element of Q1 st f.x = y)
  &
  Nucl Q1 c= Ker f
  holds
  Q2 is commutative multGroup
proof
  let Q1 be satisfying_aa1 satisfying_aa2 satisfying_aa3
    satisfying_aK1 satisfying_aK2 satisfying_aK3 multLoop;
  let Q2 be multLoop;
  let f be homomorphic Function of Q1,Q2;
  assume that A1: for y be Element of Q2 holds ex x being Element of Q1 st
    f.x = y
  and A2: Nucl Q1 c= Ker f;
  A3: Q2 is commutative
  proof
    let x,y be Element of Q2;
    consider x1 being Element of Q1 such that A4: f.x1 = x by A1;
    consider y1 being Element of Q1 such that A5: f.y1 = y by A1;
    K_op(x,y) = 1.Q2
    proof
      A6: K_op(x1,y1) in Ker f
      proof
        A7: K_op(x1,y1) in Nucl Q1
        proof
          now
            let u,w be Element of Q1;
            a_op(K_op(x1,y1),u,w) = 1.Q1 by Def19;
            hence K_op(x1,y1) * (u * w) = (K_op(x1,y1) * u) * w by Th9;
          end;
          then A8: K_op(x1,y1) in Nucl_l Q1 by Def22;
          now
            let u,w be Element of Q1;
            a_op(u,K_op(x1,y1),w) = 1.Q1 by Def20;
            hence u * (K_op(x1,y1) * w) = (u * K_op(x1,y1)) * w by Th9;
          end;
          then A9: K_op(x1,y1) in Nucl_m Q1 by Def23;
          now
            let u,w be Element of Q1;
            a_op(u,w,K_op(x1,y1)) = 1.Q1 by Def21;
            hence u * (w * K_op(x1,y1)) = (u * w) * K_op(x1,y1) by Th9;
          end;
          then K_op(x1,y1) in Nucl_r Q1 by Def24;
          hence thesis by A8,A9,Th12;
        end;
        thus thesis by A7, A2;
      end;
      K_op(x,y) = f.(y1 * x1) \ (f.x1 * f.y1) by Def28b,A4,A5
      .= f.(y1 * x1) \ f.(x1 * y1) by Def28b
      .= f.((y1 * x1) \ (x1 * y1)) by Th13
      .= 1.Q2 by A6, Def29;
      hence thesis;
    end;
    hence thesis by Th10;
  end;
  now
    let x1,y1,z1 be Element of Q1;
    a_op(x1,y1,z1) in Nucl Q1
    proof
       now
        let u,w be Element of Q1;
        a_op(a_op(x1,y1,z1),u,w) = 1.Q1 by Def15;
        hence (a_op(x1,y1,z1) * u) * w = a_op(x1,y1,z1) * (u * w) by Th9;
      end;
      then A10: a_op(x1,y1,z1) in Nucl_l Q1 by Def22;
      now
        let u,w be Element of Q1;
        a_op(u,a_op(x1,y1,z1),w) = 1.Q1 by Def16;
        hence (u * a_op(x1,y1,z1)) * w = u * (a_op(x1,y1,z1) * w) by Th9;
      end;
      then A11: a_op(x1,y1,z1) in Nucl_m Q1 by Def23;
      now
        let u,w be Element of Q1;
        a_op(u,w,a_op(x1,y1,z1)) = 1.Q1 by Def17;
        hence (u * w) * a_op(x1,y1,z1) = u * (w * a_op(x1,y1,z1)) by Th9;
      end;
      then a_op(x1,y1,z1) in Nucl_r Q1 by Def24;
      hence thesis by A10,A11,Th12;
    end;
    hence a_op(x1,y1,z1) in Ker f by A2;
  end;
  hence thesis by A3,Th15,A1;
end;
