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;
reserve G for addGroup-like non empty addMagma;
reserve h,g,g1,g2 for Element of G;
reserve A for Subset of G;
reserve H for Subgroup of G;
reserve h,h1,h2 for Element of H;
reserve G,G1,G2,G3 for addGroup;
reserve a,a1,a2,b,b1,b2,g,g1,g2 for Element of G;
reserve A,B for Subset of G;
reserve H,H1,H2,H3 for Subgroup of G;
reserve h,h1,h2 for Element of H;
reserve x,y,y1,y2 for set;
reserve G for addGroup;
reserve a,b,c,d,g,h for Element of G;
reserve A,B,C,D for Subset of G;
reserve H,H1,H2,H3 for Subgroup of G;
reserve n for Nat;
reserve i for Integer;

theorem
  {a,b} * {c,d} = {a * c,a * d,b * c,b * d}
proof
  thus {a,b} * {c,d} c= {a * c,a * d,b * c,b * d}
  proof
    let x be object;
    assume x in {a,b} * {c,d};
    then consider g,h such that
A1: x = g * h and
A2: g in {a,b} and
A3: h in {c,d};
A4: h = c or h = d by A3,TARSKI:def 2;
    g = a or g = b by A2,TARSKI:def 2;
    hence thesis by A1,A4,ENUMSET1:def 2;
  end;
  let x be object;
A5: c in {c,d} & d in {c,d} by TARSKI:def 2;
  assume x in {a * c,a * d,b * c,b * d};
  then
A6: x = a * c or x = a * d or x = b * c or x = b * d by ENUMSET1:def 2;
  a in {a,b} & b in {a,b} by TARSKI:def 2;
  hence thesis by A6,A5;
end;
