reserve L for non empty addLoopStr;
reserve a,b,c,x for Element of L;
reserve L for non empty multLoopStr;
reserve a,b,c,x,y,z for Element of L;

theorem Th11:
  L is multGroup iff (for a holds a * 1.L = a) & (for a ex x st a*
  x = 1.L) & for a,b,c holds (a*b)*c = a*(b*c)
proof
  thus L is multGroup implies (for a holds a * 1.L = a) & (for a ex x st a*x =
1.L) & for a,b,c holds (a*b)*c = a*(b*c) by Def6,GROUP_1:def 3;
  assume that
A1: for a holds a * 1.L = a and
A2: for a ex x st a*x = 1.L and
A3: for a,b,c holds (a*b)*c = a*(b*c);
A4: for a,b be Element of L ex x being Element of L st x*a=b
  proof
    let a,b;
    consider y such that
A5: y*a = 1.L by A1,A2,A3,Lm13;
    take x = b*y;
    thus x*a = b * 1.L by A3,A5
      .= b by A1;
  end;
A6: for a be Element of L holds 1.L * a = a
  proof
    let a;
    thus 1.L*a = a*1.L by A1,A2,A3,Lm12
      .= a by A1;
  end;
A7: L is left_mult-cancelable
  proof
    let a,x,y;
    consider z such that
A8: z*a = 1.L by A1,A2,A3,Lm13;
    assume a*x = a*y;
    then (z*a)*x = z*(a*y) by A3
      .= (z*a)*y by A3;
    hence x = 1.L * y by A6,A8
      .= y by A6;
  end;
A9: L is right_mult-cancelable
  proof
    let a,x,y;
    consider z such that
A10: a*z = 1.L by A2;
    assume x*a = y*a;
    then x*(a*z) = (y*a)*z by A3
      .= y*(a*z) by A3;
    hence x = y * 1.L by A1,A10
      .= y by A1;
  end;
  for a,b be Element of L ex x being Element of L st a*x=b
  proof
    let a,b;
    consider y such that
A11: a*y = 1.L by A2;
    take x = y*b;
    thus a*x = 1.L * b by A3,A11
      .= b by A6;
  end;
  hence thesis by A1,A3,A6,A4,A7,A9,Def6,GROUP_1:def 3,VECTSP_1:def 6;
end;
