reserve G for Group;
reserve A,B for non empty Subset of G;
reserve N,H,H1,H2 for Subgroup of G;
reserve x,a,b for Element of G;
reserve N1,N2 for Subgroup of G;

theorem
  for N be normal Subgroup of G holds N ~ H1 * N ~ H2 = N ~ (H1 * H2)
proof
  let N be normal Subgroup of G;
  thus N ~ H1 * N ~ H2 c= N ~ (H1 * H2)
  proof
    let x be object;
    assume
A1: x in N ~ H1 * N ~ H2;
    then reconsider x as Element of G;
    consider x1, x2 be Element of G such that
A2: x = x1 * x2 & x1 in N ~ H1 & x2 in N ~ H2 by A1;
A3: x1 * N meets carr(H1) by A2,Th51;
A4: x2 * N meets carr(H2) by A2,Th51;
     consider x19 be object such that
A5: x19 in x1 * N & x19 in carr(H1) by A3,XBOOLE_0:3;
    consider x29 be object such that
A6: x29 in x2 * N & x29 in carr(H2) by A4,XBOOLE_0:3;
    reconsider x19 as Element of G by A5;
    reconsider x29 as Element of G by A6;
A7: x19 * x29 in carr(H1) * carr(H2)  by A5,A6;
 x19 * x29 in (x1 * N) * (x2 * N) by A5,A6;
    then (x1 * N) * (x2 * N) meets carr(H1) * carr(H2) by A7,XBOOLE_0:3;
    then (x1 * x2) * N meets carr(H1) * carr(H2) by Th1;
    hence thesis by A2;
  end;
    let x be object;
    assume
A8: x in N ~ (H1 * H2);
    then reconsider x as Element of G;
 x * N meets carr(H1) * carr(H2) by A8,Th28;
    then consider x1 be object such that
A9: x1 in x * N & x1 in carr(H1) * carr(H2) by XBOOLE_0:3;
    reconsider x1 as Element of G by A9;
    consider y1, y2 be Element of G such that
A10: x1 = y1 * y2 & y1 in carr(H1) & y2 in carr(H2) by A9;
 x * N = (y1 * y2) * N by A9,A10,Th2
          .= (y1 * N) * (y2 * N) by Th1;
    then x in (y1 * N) * (y2 * N) by GROUP_2:108;
    then consider g1, g2 be Element of G such that
A11: x = g1 * g2 & g1 in y1 * N & g2 in y2 * N;
    y1 * N = g1 * N & y2 * N = g2 * N by A11,Th2;
    then y1 in g1 * N & y2 in g2 * N by GROUP_2:108;
    then g1 * N meets carr(H1) & g2 * N meets carr(H2) by A10,XBOOLE_0:3;
    then g1 in N ~ H1 & g2 in N ~ H2;
    hence thesis by A11;
end;
