let f be Function; :: thesis: for n, m being Element of NAT holds (iter (f,n)) * (iter (f,m)) = iter (f,(n + m))
let n, m be Element of NAT ; :: thesis: (iter (f,n)) * (iter (f,m)) = iter (f,(n + m))
defpred S1[ Element of NAT ] means (iter (f,n)) * (iter (f,$1)) = iter (f,(n + $1));
A1: for k being Element of NAT st S1[k] holds
S1[k + 1]
proof
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume A2: (iter (f,n)) * (iter (f,k)) = iter (f,(n + k)) ; :: thesis: S1[k + 1]
thus (iter (f,n)) * (iter (f,(k + 1))) = (iter (f,n)) * ((iter (f,k)) * f) by Th71
.= ((iter (f,n)) * (iter (f,k))) * f by RELAT_1:55
.= iter (f,((n + k) + 1)) by A2, Th71
.= iter (f,(n + (k + 1))) ; :: thesis: verum
end;
(iter (f,n)) * (iter (f,0)) = (iter (f,n)) * (id ((dom f) \/ (rng f))) by Th70
.= iter (f,(n + 0)) by Th77 ;
then A3: S1[ 0 ] ;
for k being Element of NAT holds S1[k] from NAT_1:sch 1(A3, A1);
hence (iter (f,n)) * (iter (f,m)) = iter (f,(n + m)) ; :: thesis: verum