let s be State of ; for I being Program of
for a being Int-Location st I does_not_destroy a holds
for m being Element of NAT st ( for n being Element of NAT st n < m holds
IC (Computation (s +* (I +* (Start-At (insloc 0 )))),n) in dom I ) holds
for n being Element of NAT st n <= m holds
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a
let I be Program of ; for a being Int-Location st I does_not_destroy a holds
for m being Element of NAT st ( for n being Element of NAT st n < m holds
IC (Computation (s +* (I +* (Start-At (insloc 0 )))),n) in dom I ) holds
for n being Element of NAT st n <= m holds
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a
let a be Int-Location ; ( I does_not_destroy a implies for m being Element of NAT st ( for n being Element of NAT st n < m holds
IC (Computation (s +* (I +* (Start-At (insloc 0 )))),n) in dom I ) holds
for n being Element of NAT st n <= m holds
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a )
assume A1:
I does_not_destroy a
; for m being Element of NAT st ( for n being Element of NAT st n < m holds
IC (Computation (s +* (I +* (Start-At (insloc 0 )))),n) in dom I ) holds
for n being Element of NAT st n <= m holds
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a
set s1 = s +* (I +* (Start-At (insloc 0 )));
let m be Element of NAT ; ( ( for n being Element of NAT st n < m holds
IC (Computation (s +* (I +* (Start-At (insloc 0 )))),n) in dom I ) implies for n being Element of NAT st n <= m holds
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a )
defpred S1[ Element of NAT ] means ( $1 <= m implies (Computation (s +* (I +* (Start-At (insloc 0 )))),$1) . a = s . a );
assume A2:
for n being Element of NAT st n < m holds
IC (Computation (s +* (I +* (Start-At (insloc 0 )))),n) in dom I
; for n being Element of NAT st n <= m holds
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a
A3:
for k being Element of NAT st S1[k] holds
S1[k + 1]
let n be Element of NAT ; ( n <= m implies (Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a )
assume A7:
n <= m
; (Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a
(Computation (s +* (I +* (Start-At (insloc 0 )))),0 ) . a =
(s +* (I +* (Start-At (insloc 0 )))) . a
by AMI_1:13
.=
s . a
by Th28
;
then A8:
S1[ 0 ]
;
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A8, A3);
hence
(Computation (s +* (I +* (Start-At (insloc 0 )))),n) . a = s . a
by A7; verum