reserve E, x, y, X for set;
reserve A, B, C, D for Subset of E^omega;
reserve a, a1, a2, b, c, c1, c2, d, ab, bc for Element of E^omega;
reserve e for Element of E;
reserve i, j, k, l, n, n1, n2, m for Nat;

theorem
  (A |^ m) |^ n = A |^ (m * n)
proof
  defpred P[Nat] means for m, n st m + n <= $1 holds (A |^ m) |^ n = A |^ (m *
  n);
A1: now
    let l;
    assume
A2: P[l];
    now
      let m, n;
A3:   now
        assume m + n < l + 1;
        then m + n <= l by NAT_1:13;
        hence (A |^ m) |^ n = A |^ (m * n) by A2;
      end;
A4:   now
        assume
A5:     m + n = l + 1;
A6:     now
          assume that
          m > 0 and
A7:       n > 0;
          consider k such that
A8:       k + 1 = n by A7,NAT_1:6;
A9:       m + k <= l by A5,A8;
          (A |^ m) |^ n = ((A |^ m) |^ k) ^^ (A |^ m) by A8,Th23
            .= (A |^ (m * k)) ^^ (A |^ m) by A2,A9
            .= A |^ (m * k + m) by Th33
            .= A |^ (m * n) by A8;
          hence (A |^ m) |^ n = A |^ (m * n);
        end;
A10:    now
          assume
A11:      n = 0;
          hence (A |^ m) |^ n = {<%>E} by Th24
            .= A |^ (m * n) by A11,Th24;
        end;
        now
          assume
A12:      m = 0;
          hence (A |^ m) |^ n = {<%>E} |^ n by Th24
            .= {<%>E} by Th28
            .= A |^ (m * n) by A12,Th24;
        end;
        hence (A |^ m) |^ n = A |^ (m * n) by A10,A6;
      end;
      assume m + n <= l + 1;
      hence (A |^ m) |^ n = A |^ (m * n) by A4,A3,XXREAL_0:1;
    end;
    hence P[l + 1];
  end;
A13: P[0]
  proof
    let m, n;
    assume
A14: m + n <= 0;
    then
A15: m = 0;
    n = 0 by A14;
    hence (A |^ m) |^ n = {<%>E} by Th24
      .= A |^ (m * n) by A15,Th24;
  end;
A16: for l holds P[l] from NAT_1:sch 2(A13, A1);
  now
    let m, n;
    reconsider l = m + n as Nat;
    m + n <= l;
    hence (A |^ m) |^ n = A |^ (m * n) by A16;
  end;
  hence thesis;
end;
