 reserve m,n for Nat;
 reserve i,j for Integer;
 reserve S for non empty multMagma;
 reserve r,r1,r2,s,s1,s2,t for Element of S;

theorem
  (for r,s,t holds r * s * t = r * (s * t)) &
  (for r,s holds (ex t st r * t = s) & (ex t st t * r = s)) implies
    S is associative Group-like
proof
  set r = the Element of S;
  assume that
A1: for r,s,t holds r * s * t = r * (s * t) and
A2: for r,s holds (ex t st r * t = s) & ex t st t * r = s;
  consider s1 such that
A3: r * s1 = r by A2;
  thus for r,s,t holds r * s * t = r * (s * t) by A1;
  take s1;
  let s;
  ex t st t * r = s by A2;
  hence
A4: s * s1 = s by A1,A3;
  consider s2 such that
A5: s2 * r = r by A2;
  consider t1 being Element of S such that
A6: r * t1 = s1 by A2;
A7: ex t2 being Element of S st t2 * r = s2 by A2;
A8: s1 = s2 * (r * t1) by A1,A5,A6
    .= s2 by A1,A3,A6,A7;
  ex t st r * t = s by A2;
  hence
A9: s1 * s = s by A1,A5,A8;
  consider t1 being Element of S such that
A10: s * t1 = s1 by A2;
  consider t2 being Element of S such that
A11: t2 * s = s1 by A2;
  take t1;
  consider r1 such that
A12: s * r1 = t1 by A2;
A13: ex r2 st r2 * s = t2 by A2;
  t1 = s1 * (s * r1) by A1,A9,A12
    .= t2 * (s * t1) by A1,A11,A12
    .= t2 by A1,A4,A10,A13;
  hence thesis by A10,A11;
end;
