 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;
 reserve G for Group-like non empty multMagma;
 reserve e,h for Element of G;
 reserve G for Group;
 reserve f,g,h for Element of G;
 reserve u for UnOp of G;
 reserve A for commutative Group;
 reserve a,b for Element of A;

theorem
  addLoopStr (# the carrier of A, the multF of A, 1_A #) is
    Abelian add-associative right_zeroed right_complementable
proof
  set G = addLoopStr (# the carrier of A, the multF of A, 1_A #);
  thus G is Abelian
  proof
    let a,b be Element of G;
    reconsider x = a, y = b as Element of A;
A1: for a,b be Element of G, x,y be Element of A st a = x & b = y holds a
    + b = x * y;
    thus a + b = x * y .= b + a by A1;
  end;
  hereby
    let a,b,c be Element of G;
    reconsider x = a, y = b, z = c as Element of A;
    thus a + b + c = x * y * z .= x * (y * z) by Def3
      .= a + (b + c);
  end;
  hereby
    let a be Element of G;
    reconsider x = a as Element of A;
    thus a + 0.G = x * 1_A .= a by Def4;
  end;
  let a be Element of G;
  reconsider x = a as Element of A;
  reconsider b = inverse_op(A).x as Element of G;
  take b;
  thus a + b = x * x" by Def6
    .= 0.G by Def5;
end;
