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

theorem Th64:
  Q is AIM implies lp (Nucl Q) is normal 
proof
  assume A1: Q is AIM;
  set H = lp (Nucl Q);
  A2: for x,y being Element of Q holds
  (ex v being Element of Q st v in Nucl Q & y = x * v)
  iff
  (ex u,v being Element of Q st u in Nucl Q & v in Nucl Q & y = u * (x * v))
  proof
    let x,y;
    thus (ex v being Element of Q st v in Nucl Q & y = x * v)
    implies
    (ex u,v being Element of Q st u in Nucl Q & v in Nucl Q & y = u * (x * v))
    proof
      given v being Element of Q such that
      A3: v in Nucl Q & y = x * v;
      take 1.Q,v;
      thus thesis by A3,Th20;
    end;
    thus (ex u,v being Element of Q st u in Nucl Q & v in Nucl Q &
      y = u * (x * v))
    implies
    (ex v being Element of Q st v in Nucl Q & y = x * v)
    proof
      given u,v being Element of Q such that
      A4: u in Nucl Q & v in Nucl Q & y = u * (x * v);
      take T_map(u,x) * v;
      T_map(u,x) in Nucl Q by A1,Th62,A4;
      then T_map(u,x) in [#] lp (Nucl Q) & v in [#] lp (Nucl Q)
        by A4,Th24;
      then T_map(u,x) * v in [#] lp (Nucl Q) by Th37;
      hence T_map(u,x) * v in Nucl Q by Th24;
      A5: v in Nucl_r Q by Th12,A4;
      y  = (x * (x \ (u * x))) * v by Def24,A5,A4
      .= x * (T_map(u,x) * v) by Def24,A5;
      hence thesis;
    end;
  end;
  A6: for x,y being Element of Q holds y in x * H iff
  ex v being Element of Q st v in Nucl Q & y = x * v
  proof
    let x,y;
    y in x * H iff ex u,v being Element of Q st u in Nucl Q &
      v in Nucl Q & y = u * (x * v) by Th60;
    hence thesis by A2;
  end;
  A7: for x,y being Element of Q holds x * H = y * H iff
        ex v being Element of Q st v in Nucl Q & y = x * v
  proof
    let x,y;
    x * H = y * H iff ex u,v being Element of Q st u in Nucl Q & v in Nucl Q
      & y = u * (x * v) by Th61;
    hence thesis by A2;
  end;
  A8: 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 x2,y2 being Element of Q such that
        A9: x2 in x * H & y2 in y * H & z = x2 * y2 by Def42;
        ex v being Element of Q st v in Nucl Q & z = (x * y) * v
        proof
          consider u being Element of Q such that
          A10: u in Nucl Q & x2 = x * u by A6,A9;
          consider v being Element of Q such that
          A11: v in Nucl Q & y2 = y * v by A6,A9;
          take (T_map(u,y) * v);
          T_map(u,y) in Nucl Q by A1,Th62,A10;
          then T_map(u,y) in [#] lp (Nucl Q) & v in [#] lp (Nucl Q)
            by A11,Th24;
          then T_map(u,y) * v in [#] lp (Nucl Q) by Th37;
          hence A12: T_map(u,y) * v in Nucl Q by Th24;
          A13: u in Nucl_m Q by Th12,A10;
          A14: v in Nucl_r Q by Th12,A11;
          A15: T_map(u,y) * v in Nucl_r Q by Th12,A12;
          z = x * (u * (y * v)) by Def23,A13,A11,A10,A9
          .= x * ((y * T_map(u,y)) * v) by Def24,A14
          .= x * (y * (T_map(u,y) * v)) by Def24,A14
          .= (x * y) * (T_map(u,y) * v) by Def24,A15;
          hence thesis;
        end;
        hence z in (x * y) * H by A6;
      end;
      assume z in (x * y) * H;
      then consider v such that
      A16: v in Nucl Q & z = (x * y) * v by A6;
      ex x1,y1 being Element of Q st x1 in x * H & y1 in y * H & z = x1 * y1
      proof
        take x, y * v;
        A17:  1.Q in Nucl Q & x = x * 1.Q by Th20;
        v in Nucl_r Q by Th12,A16;
        hence thesis by A17,A16,Def24,A6;
      end;
      hence thesis 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 A8;
    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 A8;
      then (x * y) * H = (x * z) * H by A8;
      then consider w such that
      A18: w in Nucl Q & x * z = (x * y) * w by A7;
      A19: w in Nucl_r Q by Th12,A18;
      x * z = x * (y * w) by A18,Def24,A19;
      hence y * H = z * H by Th1,A7,A18;
    end;
    assume (y * H) * (x * H) = (z * H) * (x * H);
    then (y * x) * H = (z * H) * (x * H) by A8;
    then (y * x) * H = (z * x) * H by A8;
    then consider w such that
    A20: w in Nucl Q & z * x = (y * x) * w by A7;
    A21: w in Nucl_l Q & w in Nucl_r Q by Th12,A20;
    set v = (x * w) / x;
    A22: v in Nucl Q by A1,Th63,A20;
    then A23: v in Nucl_m Q by Th12;
    z * x = y * (v * x) by A20,Def24,A21
    .= (y * v) * x by Def23,A23;
    hence y * H = z * H by Th2,A7,A22;
  end;
  hence thesis;
end;
