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

theorem Th54:
  lp (Cent Q) is normal
proof
  set H = lp (Cent Q);
  A1: for x,y holds (x * H) * (y * H) = (x * y) * H
  proof
    let x,y;
    for z holds z in (x * H) * (y * H) iff z in (x * y) * H
    proof
      let z;
      thus z in (x * H) * (y * H) implies z in (x * y) * H
      proof
        assume z in (x * H) * (y * H);
        then consider v,w such that
        A2: v in x * H & w in y * H & z = v * w by Def42;
        consider v1 being Element of Q such that
        A3: v1 in Cent Q & v = x * v1 by Th52,A2;
        consider w1 being Element of Q such that
        A4: w1 in Cent Q & w = y * w1 by Th52,A2;
        v1 in [#] lp (Cent Q) & w1 in [#] lp (Cent Q) by A3,A4,Th25;
        then v1 * w1 in [#] lp (Cent Q) by Th37;
        then A5: v1 * w1 in Cent Q by Th25;
        A6: v1 in Comm Q by A3,XBOOLE_0:def 4;
        A7: v1 in Nucl Q by A3,XBOOLE_0:def 4;
        A8: v1 in Nucl_m Q & v1 in Nucl_r Q by A7,Th12;
        w1 in Nucl Q by A4,XBOOLE_0:def 4;
        then A9: w1 in Nucl_r Q by Th12;
        z  = ((x * v1) * y) * w1 by Def24,A9,A4,A3,A2
        .= (x * (v1 * y)) * w1 by Def23,A8
        .= (x * (y * v1)) * w1 by Def25,A6
        .= ((x * y) * v1) * w1 by Def24,A8
        .= (x * y) * (v1 * w1) by Def24,A9;
        hence z in (x * y) * H by Th52,A5;
      end;
      assume z in (x * y) * H;
      then consider w such that
      A10: w in Cent Q & z = (x * y) * w by Th52;
      w in Nucl Q by A10,XBOOLE_0:def 4;
      then A11: w in Nucl_r Q by Th12;
      ex u,v st u in x * H & v in y * H & z = u * v
      proof
        take x * 1.Q,y * w;
        thus thesis by Def24,A11,Th52, Th50,A10;
      end;
      hence z in (x * H) * (y * H) by Def42;
    end;
    hence thesis by SUBSET_1:3;
  end;
  for x,y holds (x * H) * (y * H) = (x * y) * H &
  for z holds ((x * H) * (y * H) = (x * H) * (z * H) implies (y * H) = (z * H))
  &
  ((y * H) * (x * H) = (z * H) * (x * H) implies (y * H) = (z * H))
  proof
    let x,y;
    thus (x * H) * (y * H) = (x * y) * H by A1;
    let z;
    thus (x * H) * (y * H) = (x * H) * (z * H) implies (y * H) = (z * H)
    proof
      assume (x * H) * (y * H) = (x * H) * (z * H);
      then (x * y) * H = (x * H) * (z * H) by A1;
      then (x * y) * H = (x * z) * H by A1;
      then consider w such that
      A12: w in Cent Q & x * z = (x * y) * w by Th53;
      w in Nucl Q by A12,XBOOLE_0:def 4;
      then A13: w in Nucl_r Q by Th12;
      x * z = x * (y * w) by A12,Def24,A13;
      hence y * H = z * H by Th1,Th53,A12;
    end;
    assume (y * H) * (x * H) = (z * H) * (x * H);
    then (y * x) * H = (z * H) * (x * H) by A1;
    then (y * x) * H = (z * x) * H by A1;
    then consider w such that
    A14: w in Cent Q & z * x = (y * x) * w by Th53;
    A15: w in Comm Q by A14,XBOOLE_0:def 4;
    w in Nucl Q by A14,XBOOLE_0:def 4;
    then A16: w in Nucl_l Q by Th12;
    z * x = w * (y * x) by A14,Def25,A15
    .= (w * y) * x by Def22,A16;
    then z = w * y by Th2;
    then z = y * w by Def25,A15;
    hence y * H = z * H by Th53,A14;
  end;
  hence thesis;
end;
