let p be Instruction-Sequence of SCM+FSA; for s being State of SCM+FSA
for a being read-write Int-Location
for I being MacroInstruction of SCM+FSA
for k being Nat st ((StepWhile>0 (a,I,p,s)) . k) . a <= 0 holds
for n being Nat st k <= n holds
DataPart ((StepWhile>0 (a,I,p,s)) . n) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
let s be State of SCM+FSA; for a being read-write Int-Location
for I being MacroInstruction of SCM+FSA
for k being Nat st ((StepWhile>0 (a,I,p,s)) . k) . a <= 0 holds
for n being Nat st k <= n holds
DataPart ((StepWhile>0 (a,I,p,s)) . n) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
let a be read-write Int-Location; for I being MacroInstruction of SCM+FSA
for k being Nat st ((StepWhile>0 (a,I,p,s)) . k) . a <= 0 holds
for n being Nat st k <= n holds
DataPart ((StepWhile>0 (a,I,p,s)) . n) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
let I be MacroInstruction of SCM+FSA ; for k being Nat st ((StepWhile>0 (a,I,p,s)) . k) . a <= 0 holds
for n being Nat st k <= n holds
DataPart ((StepWhile>0 (a,I,p,s)) . n) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
let k be Nat; ( ((StepWhile>0 (a,I,p,s)) . k) . a <= 0 implies for n being Nat st k <= n holds
DataPart ((StepWhile>0 (a,I,p,s)) . n) = DataPart ((StepWhile>0 (a,I,p,s)) . k) )
set SW = StepWhile>0 (a,I,p,s);
set PW = p +* (while>0 (a,I));
defpred S1[ Nat] means ( k <= $1 implies DataPart ((StepWhile>0 (a,I,p,s)) . $1) = DataPart ((StepWhile>0 (a,I,p,s)) . k) );
assume A1:
((StepWhile>0 (a,I,p,s)) . k) . a <= 0
; for n being Nat st k <= n holds
DataPart ((StepWhile>0 (a,I,p,s)) . n) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
A2:
now for n being Nat st S1[n] holds
S1[n + 1]let n be
Nat;
( S1[n] implies S1[n + 1] )assume A3:
S1[
n]
;
S1[n + 1]thus
S1[
n + 1]
verumproof
assume A4:
k <= n + 1
;
DataPart ((StepWhile>0 (a,I,p,s)) . (n + 1)) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
per cases
( k <= n or k = n + 1 )
by A4, NAT_1:8;
suppose A5:
k <= n
;
DataPart ((StepWhile>0 (a,I,p,s)) . (n + 1)) = DataPart ((StepWhile>0 (a,I,p,s)) . k)then
((StepWhile>0 (a,I,p,s)) . n) . a <= 0
by A1, A3, SCMFSA_M:2;
hence
DataPart ((StepWhile>0 (a,I,p,s)) . (n + 1)) = DataPart ((StepWhile>0 (a,I,p,s)) . k)
by A3, A5, Th31;
verum end; end;
end; end;
A6:
S1[ 0 ]
;
thus
for n being Nat holds S1[n]
from NAT_1:sch 2(A6, A2); verum