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),(Initialized s));
A3:
( a = intloc 0 or not a is read-only )
by SF_MASTR:def 5;
A4:
Exec (((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialized s)) = IExec ((Macro ((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a)),s)
by SCMFSA6C:6;
A5: (Exec (((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialized s))) . (1 -stRWNotIn ({a} \/ (UsedIntLoc I))) =
(Initialized 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),(Initialized s))) . (intloc 0) =
(Initialized 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),(Initialized s))))) = DataPart (Exec (((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialized 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),(Initialized s))))) . x
by A4, A6, SFMASTR1:16
.=
(Exec (((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialized s))) . x
by A7, SCMFSA6A:38
.=
(Initialized s) . x
by SCMFSA_2:89
.=
s . x
by SCMFSA6C:3
;
verum end;
A9:
DataPart s = DataPart (Initialized 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),(Initialized s))))) . x
by A4, A6, SFMASTR1:15
.=
(Exec (((1 -stRWNotIn ({a} \/ (UsedIntLoc I))) := a),(Initialized s))) . x
by A7, SCMFSA6A:38
.=
(Initialized 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