let a be Int-Location ; for I being Program of SCM+FSA
for n being Element of NAT
for s being State of SCM+FSA st I +* (Start-At 0 ,SCM+FSA ) c= s & ( for m being Element of NAT st m < n holds
IC (Comput (ProgramPart s),s,m) in dom I ) & not a in UsedIntLoc I holds
(Comput (ProgramPart s),s,n) . a = s . a
let I be Program of SCM+FSA ; for n being Element of NAT
for s being State of SCM+FSA st I +* (Start-At 0 ,SCM+FSA ) c= s & ( for m being Element of NAT st m < n holds
IC (Comput (ProgramPart s),s,m) in dom I ) & not a in UsedIntLoc I holds
(Comput (ProgramPart s),s,n) . a = s . a
let n be Element of NAT ; for s being State of SCM+FSA st I +* (Start-At 0 ,SCM+FSA ) c= s & ( for m being Element of NAT st m < n holds
IC (Comput (ProgramPart s),s,m) in dom I ) & not a in UsedIntLoc I holds
(Comput (ProgramPart s),s,n) . a = s . a
let s be State of SCM+FSA ; ( I +* (Start-At 0 ,SCM+FSA ) c= s & ( for m being Element of NAT st m < n holds
IC (Comput (ProgramPart s),s,m) in dom I ) & not a in UsedIntLoc I implies (Comput (ProgramPart s),s,n) . a = s . a )
assume that
A1:
I +* (Start-At 0 ,SCM+FSA ) c= s
and
A2:
for m being Element of NAT st m < n holds
IC (Comput (ProgramPart s),s,m) in dom I
and
A3:
not a in UsedIntLoc I
; (Comput (ProgramPart s),s,n) . a = s . a
defpred S1[ Nat] means ( $1 <= n implies (Comput (ProgramPart s),s,$1) . a = s . a );
A4:
for m being Element of NAT st S1[m] holds
S1[m + 1]
proof
let m be
Element of
NAT ;
( S1[m] implies S1[m + 1] )
set sm =
Comput (ProgramPart s),
s,
m;
assume A5:
(
m <= n implies
(Comput (ProgramPart s),s,m) . a = s . a )
;
S1[m + 1]
assume A6:
m + 1
<= n
;
(Comput (ProgramPart s),s,(m + 1)) . a = s . a
then
m < n
by NAT_1:13;
then A7:
IC (Comput (ProgramPart s),s,m) in dom I
by A2;
then A8:
I . (IC (Comput (ProgramPart s),s,m)) in rng I
by FUNCT_1:def 5;
Y:
(ProgramPart (Comput (ProgramPart s),s,m)) /. (IC (Comput (ProgramPart s),s,m)) = (Comput (ProgramPart s),s,m) . (IC (Comput (ProgramPart s),s,m))
by AMI_1:150;
dom I misses dom (Start-At 0 ,SCM+FSA )
by Th64;
then
I c= I +* (Start-At 0 ,SCM+FSA )
by FUNCT_4:33;
then
I c= s
by A1, XBOOLE_1:1;
then
I c= Comput (ProgramPart s),
s,
m
by AMI_1:81;
then
I . (IC (Comput (ProgramPart s),s,m)) = (Comput (ProgramPart s),s,m) . (IC (Comput (ProgramPart s),s,m))
by A7, GRFUNC_1:8;
then
UsedIntLoc ((Comput (ProgramPart s),s,m) . (IC (Comput (ProgramPart s),s,m))) c= UsedIntLoc I
by A8, Th23;
then A9:
not
a in UsedIntLoc ((Comput (ProgramPart s),s,m) . (IC (Comput (ProgramPart s),s,m)))
by A3;
T:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,m)
by AMI_1:144;
thus (Comput (ProgramPart s),s,(m + 1)) . a =
(Following (ProgramPart s),(Comput (ProgramPart s),s,m)) . a
by AMI_1:14
.=
s . a
by A5, A6, A9, Th68, NAT_1:13, Y, T
;
verum
end;
A10:
S1[ 0 ]
by AMI_1:13;
for m being Element of NAT holds S1[m]
from NAT_1:sch 1(A10, A4);
hence
(Comput (ProgramPart s),s,n) . a = s . a
; verum