reserve Q,Q1,Q2 for multLoop;
reserve x,y,z,w,u,v for Element of Q;

theorem Th21:
  x in Nucl Q & y in Nucl Q implies x * y in Nucl Q
proof
  assume that
  A1: x in Nucl Q
  and
  A2: y in Nucl Q;
  A3: x in Nucl_l Q by Th12,A1;
  A4: x in Nucl_m Q by Th12,A1;
  A5: x in Nucl_r Q by Th12,A1;
  A6: y in Nucl_l Q by Th12,A2;
  A7: y in Nucl_m Q by Th12,A2;
  A8: y in Nucl_r Q by Th12,A2;
  for z,w holds ((x * y) * z) * w = (x * y) * (z * w)
  proof
    let z,w;
    ((x * y) * z) * w = (x * (y * z)) * w by A3,Def22
    .= x * ((y * z) * w) by A3,Def22
    .= x * (y * (z * w)) by A6,Def22
    .= (x * y) * (z * w) by A3,Def22;
    hence thesis;
  end;
  then A9: x * y in Nucl_l Q by Def22;
  for z,w holds (z * (x * y)) * w = z * ((x * y) * w)
  proof
    let z,w;
    (z * (x * y)) * w = ((z * x) * y) * w by A4,Def23
    .= (z * x) * (y * w) by A7,Def23
    .= z * (x * (y * w)) by A4,Def23
    .= z * ((x * y) * w) by A7,Def23;
    hence thesis;
  end;
  then A10: x * y in Nucl_m Q by Def23;
  for z,w holds (z * w) * (x * y) = z * (w * (x * y))
  proof
    let z,w;
    (z * w) * (x * y) = ((z * w) * x) * y by A8,Def24
    .= (z * (w * x)) * y by A5,Def24
    .= z * ((w * x) * y) by A8,Def24
    .= z * (w * (x * y)) by A8,Def24;
    hence thesis;
  end;
  then x * y in Nucl_r Q by Def24;
  hence thesis by Th12,A9,A10;
end;
