reserve m,n for Nat;
reserve i,j for Integer;
reserve S for non empty addMagma;
reserve r,r1,r2,s,s1,s2,t,t1,t2 for Element of S;
reserve G for addGroup-like non empty addMagma;
reserve e,h for Element of G;
reserve G for addGroup;
reserve f,g,h for Element of G;
reserve u for UnOp of G;
reserve A for Abelian addGroup;
reserve a,b for Element of A;
reserve x for object;
reserve y,y1,y2,Y,Z for set;
reserve k for Nat;
reserve G for addGroup;
reserve a,g,h for Element of G;
reserve A for Subset of G;
reserve G for non empty addMagma,
  A,B,C for Subset of G;
reserve a,b,g,g1,g2,h,h1,h2 for Element of G;

theorem
  (for a,b st a in A & b in B holds a + b = b + a) implies A + B = B + A
proof
  assume
A1: for a,b st a in A & b in B holds a + b = b + a;
  thus A + B c= B + A
  proof
    let x be object;
    assume x in A + B;
    then consider a,b such that
A2: x = a + b and
A3: a in A & b in B;
    x = b + a by A1,A2,A3;
    hence thesis by A3;
  end;
  let x be object;
  assume x in B + A;
  then consider b,a such that
A4: x = b + a and
A5: b in B & a in A;
  x = a + b by A1,A4,A5;
  hence thesis by A5;
end;
