let s be State of SCM+FSA ; for a being Int-Location
for I being Program of SCM+FSA st s . a <= 0 & s . (intloc 0 ) = 1 holds
(IExec (times a,I),s) | ((UsedIntLoc I) \/ FinSeq-Locations ) = s | ((UsedIntLoc I) \/ FinSeq-Locations )
let a be Int-Location ; for I being Program of SCM+FSA st s . a <= 0 & s . (intloc 0 ) = 1 holds
(IExec (times a,I),s) | ((UsedIntLoc I) \/ FinSeq-Locations ) = s | ((UsedIntLoc I) \/ FinSeq-Locations )
let I be Program of SCM+FSA ; ( s . a <= 0 & s . (intloc 0 ) = 1 implies (IExec (times a,I),s) | ((UsedIntLoc I) \/ FinSeq-Locations ) = s | ((UsedIntLoc I) \/ FinSeq-Locations ) )
set FSL = FinSeq-Locations ;
assume that
A1:
s . a <= 0
and
A2:
s . (intloc 0 ) = 1
; (IExec (times a,I),s) | ((UsedIntLoc I) \/ FinSeq-Locations ) = s | ((UsedIntLoc I) \/ FinSeq-Locations )
set UILI = UsedIntLoc I;
set au = 1 -stRWNotIn ({a} \/ (UsedIntLoc I));
set WH = while>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(I ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(intloc 0 )));
set s1 = Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s);
A3:
( a = intloc 0 or not a is read-only )
by SF_MASTR:def 5;
A4:
Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s) = IExec (Macro ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a)),s
by SCMFSA6C:6;
A5: (Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s)) . (1 -stRWNotIn ({a} \/ (UsedIntLoc I))) =
(Initialize s) . a
by SCMFSA_2:89
.=
s . a
by A2, A3, SCMFSA6C:3
;
then A6:
( while>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(I ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(intloc 0 ))) is_closed_on IExec (Macro ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a)),s & while>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(I ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(intloc 0 ))) is_halting_on IExec (Macro ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a)),s )
by A1, A4, SCMFSA_9:43;
(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s)) . (intloc 0 ) =
(Initialize s) . (intloc 0 )
by SCMFSA_2:89
.=
1
by SCMFSA6C:3
;
then A7:
DataPart (IExec (while>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(I ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(intloc 0 )))),(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s))) = DataPart (Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s))
by A1, A5, SCMFSA9A:41;
A8:
now let x be
FinSeq-Location ;
( x in FinSeq-Locations implies (IExec (times a,I),s) . x = s . x )assume
x in FinSeq-Locations
;
(IExec (times a,I),s) . x = s . xthus (IExec (times a,I),s) . x =
(IExec (while>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(I ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(intloc 0 )))),(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s))) . x
by A4, A6, SFMASTR1:16
.=
(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s)) . x
by A7, SCMFSA6A:38
.=
(Initialize s) . x
by SCMFSA_2:89
.=
s . x
by SCMFSA6C:3
;
verum end;
A9:
DataPart s = DataPart (Initialize s)
by A2, SCMFSA8C:27;
A10:
now let x be
Int-Location ;
( x in UsedIntLoc I implies (IExec (times a,I),s) . x = s . x )A11:
not 1
-stRWNotIn ({a} \/ (UsedIntLoc I)) in {a} \/ (UsedIntLoc I)
by SFMASTR1:21;
assume
x in UsedIntLoc I
;
(IExec (times a,I),s) . x = s . xthen A12:
1
-stRWNotIn ({a} \/ (UsedIntLoc I)) <> x
by A11, XBOOLE_0:def 3;
thus (IExec (times a,I),s) . x =
(IExec (while>0 (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(I ';' (SubFrom (1 -stRWNotIn ({a} \/ (UsedIntLoc I))),(intloc 0 )))),(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s))) . x
by A4, A6, SFMASTR1:15
.=
(Exec ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialize s)) . x
by A7, SCMFSA6A:38
.=
(Initialize s) . x
by A12, SCMFSA_2:89
.=
s . x
by A9, SCMFSA6A:38
;
verum end;
[#] FinSeq-Locations = FinSeq-Locations
;
hence
(IExec (times a,I),s) | ((UsedIntLoc I) \/ FinSeq-Locations ) = s | ((UsedIntLoc I) \/ FinSeq-Locations )
by A10, A8, Th6; verum