
theorem T3:
for L being non empty 1-sorted
for f being Function of L,L
for n being Nat holds f`^(n+1) = (f`^n) * f = f * (f`^n)
proof
let R be non empty 1-sorted, f be Function of R,R; let n be Nat;
defpred P[Nat] means f`^(($1)+1) = f`^($1) * f;
IS: now let k be Nat;
    assume AS: for j being Nat st j < k holds P[j];
    consider F being Funcs(R,R)-valued sequence such that
    A: f`^(k+1) = F.(k+1) & F.0 = id R &
       for i being Nat holds F.(i+1) = (F.i) * f by dd;
    reconsider k1 = k as Element of NAT by ORDINAL1:def 12;
    B: for m being Element of NAT st m <= k holds F.m = f`^m
       proof
       let m be Element of NAT;
       assume C: m <= k;
       defpred Q[Nat] means F.($1) = f`^$1;
       IA: Q[0] by A,T1;
       IS: now let j be Element of NAT;
           assume E: 0 <= j & j < k1;
           assume IV: Q[j];
           F.(j+1) = f`^j * f by A,IV .= f`^(j+1) by E,AS;
           hence Q[j+1];
           end;
       for j being Element of NAT st 0 <= j & j <= k1
                       holds Q[j] from INT_1:sch 7(IA,IS);
       hence thesis by C;
       end;
    f`^(k+1) = F.k * f by A .= f`^k1 * f by B;
    hence P[k];
    end;
I: for k being Nat holds P[k] from NAT_1:sch 4(IS);
hence f`^(n+1) = (f`^n) * f;
defpred P[Nat] means (f`^$1) * f = f * (f`^$1);
    (f`^0) * f = (id R) * f by T1 .= f * (id R)
              .= f * (f`^0) by T1; then
IA: P[0];
IS: now let k be Nat;
    assume IV: P[k];
    (f`^(k+1)) * f
         = (f * (f`^k)) * f by I,IV
        .= f * ((f`^k) * f) by T2
        .= f * (f`^(k+1)) by I;
    hence P[k+1];
    end;
for k being Nat holds P[k] from NAT_1:sch 2(IA,IS);
hence (f`^n) * f = f * (f`^n);
end;
