let s be State of SCM+FSA ; for a being Int-Location
for J being good Program of SCM+FSA
for k being Element of NAT st ((StepTimes a,J,s) . k) . (intloc 0 ) = 1 & J is_halting_on Initialized ((StepTimes a,J,s) . k) & J is_closed_on Initialized ((StepTimes a,J,s) . k) & ((StepTimes a,J,s) . k) . (1 -stRWNotIn ({a} \/ (UsedIntLoc J))) > 0 holds
((StepTimes a,J,s) . (k + 1)) | ((UsedIntLoc J) \/ FinSeq-Locations ) = (IExec J,((StepTimes a,J,s) . k)) | ((UsedIntLoc J) \/ FinSeq-Locations )
let a be Int-Location ; for J being good Program of SCM+FSA
for k being Element of NAT st ((StepTimes a,J,s) . k) . (intloc 0 ) = 1 & J is_halting_on Initialized ((StepTimes a,J,s) . k) & J is_closed_on Initialized ((StepTimes a,J,s) . k) & ((StepTimes a,J,s) . k) . (1 -stRWNotIn ({a} \/ (UsedIntLoc J))) > 0 holds
((StepTimes a,J,s) . (k + 1)) | ((UsedIntLoc J) \/ FinSeq-Locations ) = (IExec J,((StepTimes a,J,s) . k)) | ((UsedIntLoc J) \/ FinSeq-Locations )
let J be good Program of SCM+FSA ; for k being Element of NAT st ((StepTimes a,J,s) . k) . (intloc 0 ) = 1 & J is_halting_on Initialized ((StepTimes a,J,s) . k) & J is_closed_on Initialized ((StepTimes a,J,s) . k) & ((StepTimes a,J,s) . k) . (1 -stRWNotIn ({a} \/ (UsedIntLoc J))) > 0 holds
((StepTimes a,J,s) . (k + 1)) | ((UsedIntLoc J) \/ FinSeq-Locations ) = (IExec J,((StepTimes a,J,s) . k)) | ((UsedIntLoc J) \/ FinSeq-Locations )
let k be Element of NAT ; ( ((StepTimes a,J,s) . k) . (intloc 0 ) = 1 & J is_halting_on Initialized ((StepTimes a,J,s) . k) & J is_closed_on Initialized ((StepTimes a,J,s) . k) & ((StepTimes a,J,s) . k) . (1 -stRWNotIn ({a} \/ (UsedIntLoc J))) > 0 implies ((StepTimes a,J,s) . (k + 1)) | ((UsedIntLoc J) \/ FinSeq-Locations ) = (IExec J,((StepTimes a,J,s) . k)) | ((UsedIntLoc J) \/ FinSeq-Locations ) )
set UFLI = FinSeq-Locations ;
set I = J;
set ST = StepTimes a,J,s;
set au = 1 -stRWNotIn ({a} \/ (UsedIntLoc J));
set SW = StepWhile>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(J ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 ))),(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc J))) := a),(Initialized s));
set UILI = UsedIntLoc J;
assume that
A1:
((StepTimes a,J,s) . k) . (intloc 0 ) = 1
and
A2:
( J is_halting_on Initialized ((StepTimes a,J,s) . k) & J is_closed_on Initialized ((StepTimes a,J,s) . k) )
and
A3:
((StepTimes a,J,s) . k) . (1 -stRWNotIn ({a} \/ (UsedIntLoc J))) > 0
; ((StepTimes a,J,s) . (k + 1)) | ((UsedIntLoc J) \/ FinSeq-Locations ) = (IExec J,((StepTimes a,J,s) . k)) | ((UsedIntLoc J) \/ FinSeq-Locations )
A4:
Macro (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 )) is_closed_on IExec J,((StepTimes a,J,s) . k)
by SCMFSA7B:24;
Macro (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 )) is_halting_on IExec J,((StepTimes a,J,s) . k)
by SCMFSA7B:25;
then
J ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 )) is_halting_on Initialized ((StepTimes a,J,s) . k)
by A2, A4, SFMASTR1:4;
then A5:
DataPart ((StepWhile>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(J ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 ))),(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc J))) := a),(Initialized s))) . (k + 1)) = DataPart (IExec (J ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 ))),((StepTimes a,J,s) . k))
by A1, A2, A3, A4, SCMFSA9A:38, SFMASTR1:3;
A6:
now let x be
Int-Location ;
( x in UsedIntLoc J implies ((StepTimes a,J,s) . (k + 1)) . x = (IExec J,((StepTimes a,J,s) . k)) . x )A7:
not 1
-stRWNotIn ({a} \/ (UsedIntLoc J)) in {a} \/ (UsedIntLoc J)
by SFMASTR1:21;
assume
x in UsedIntLoc J
;
((StepTimes a,J,s) . (k + 1)) . x = (IExec J,((StepTimes a,J,s) . k)) . xthen A8:
1
-stRWNotIn ({a} \/ (UsedIntLoc J)) <> x
by A7, XBOOLE_0:def 3;
thus ((StepTimes a,J,s) . (k + 1)) . x =
(IExec (J ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 ))),((StepTimes a,J,s) . k)) . x
by A5, SCMFSA6A:38
.=
(Exec (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 )),(IExec J,((StepTimes a,J,s) . k))) . x
by A2, SFMASTR1:12
.=
(IExec J,((StepTimes a,J,s) . k)) . x
by A8, SCMFSA_2:91
;
verum end;
now let x be
FinSeq-Location ;
((StepTimes a,J,s) . (k + 1)) . x = (IExec J,((StepTimes a,J,s) . k)) . xthus ((StepTimes a,J,s) . (k + 1)) . x =
(IExec (J ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 ))),((StepTimes a,J,s) . k)) . x
by A5, SCMFSA6A:38
.=
(Exec (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc J))),(intloc 0 )),(IExec J,((StepTimes a,J,s) . k))) . x
by A2, SFMASTR1:13
.=
(IExec J,((StepTimes a,J,s) . k)) . x
by SCMFSA_2:91
;
verum end;
hence
((StepTimes a,J,s) . (k + 1)) | ((UsedIntLoc J) \/ FinSeq-Locations ) = (IExec J,((StepTimes a,J,s) . k)) | ((UsedIntLoc J) \/ FinSeq-Locations )
by A6, Th7; verum