let s be State of SCM+FSA; for p being Instruction-Sequence of SCM+FSA
for a being Int-Location
for I being really-closed MacroInstruction of SCM+FSA st s . a <= 0 & s . (intloc 0) = 1 holds
(IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations)
let p be Instruction-Sequence of SCM+FSA; for a being Int-Location
for I being really-closed MacroInstruction of SCM+FSA st s . a <= 0 & s . (intloc 0) = 1 holds
(IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations)
let a be Int-Location; for I being really-closed MacroInstruction of SCM+FSA st s . a <= 0 & s . (intloc 0) = 1 holds
(IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations)
let I be really-closed MacroInstruction of SCM+FSA ; ( s . a <= 0 & s . (intloc 0) = 1 implies (IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations) )
set FSL = FinSeq-Locations ;
assume that
A1:
s . a <= 0
and
A2:
s . (intloc 0) = 1
; (IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations)
set UILI = UsedILoc I;
set au = 1 -stRWNotIn ({a} \/ (UsedILoc I));
set WH = while>0 ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(I ";" (SubFrom ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(intloc 0)))));
set s1 = Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s));
A3:
( a = intloc 0 or a is read-write )
by SCMFSA_M:def 2;
A4:
Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s)) = IExec ((Macro ((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a)),p,s)
by SCMFSA6C:5;
A5: (Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))) . (1 -stRWNotIn ({a} \/ (UsedILoc I))) =
(Initialized s) . a
by SCMFSA_2:63
.=
s . a
by A2, A3, SCMFSA_M:9, SCMFSA_M:37
;
then A6:
while>0 ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(I ";" (SubFrom ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(intloc 0))))) is_halting_on IExec ((Macro ((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a)),p,s),p
by A1, A4, SCMFSA_9:38;
(Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))) . (intloc 0) =
(Initialized s) . (intloc 0)
by SCMFSA_2:63
.=
1
by SCMFSA_M:9
;
then A7:
DataPart (IExec ((while>0 ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(I ";" (SubFrom ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(intloc 0)))))),p,(Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))))) = DataPart (Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s)))
by A1, A5, SCMFSA9A:35;
A8:
now for x being FinSeq-Location st x in FinSeq-Locations holds
(IExec ((times (a,I)),p,s)) . x = s . xlet x be
FinSeq-Location ;
( x in FinSeq-Locations implies (IExec ((times (a,I)),p,s)) . x = s . x )assume
x in FinSeq-Locations
;
(IExec ((times (a,I)),p,s)) . x = s . xthus (IExec ((times (a,I)),p,s)) . x =
(IExec ((while>0 ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(I ";" (SubFrom ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(intloc 0)))))),p,(Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))))) . x
by A4, SFMASTR1:15, A6
.=
(Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))) . x
by A7, SCMFSA_M:2
.=
(Initialized s) . x
by SCMFSA_2:63
.=
s . x
by SCMFSA_M:37
;
verum end;
A9:
DataPart s = DataPart (Initialized s)
by A2, SCMFSA_M:19;
A10:
now for x being Int-Location st x in UsedILoc I holds
(IExec ((times (a,I)),p,s)) . x = s . xlet x be
Int-Location;
( x in UsedILoc I implies (IExec ((times (a,I)),p,s)) . x = s . x )A11:
not 1
-stRWNotIn ({a} \/ (UsedILoc I)) in {a} \/ (UsedILoc I)
by SCMFSA_M:25;
assume
x in UsedILoc I
;
(IExec ((times (a,I)),p,s)) . x = s . xthen A12:
1
-stRWNotIn ({a} \/ (UsedILoc I)) <> x
by A11, XBOOLE_0:def 3;
thus (IExec ((times (a,I)),p,s)) . x =
(IExec ((while>0 ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(I ";" (SubFrom ((1 -stRWNotIn ({a} \/ (UsedILoc I))),(intloc 0)))))),p,(Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))))) . x
by A4, SFMASTR1:14, A6
.=
(Exec (((1 -stRWNotIn ({a} \/ (UsedILoc I))) := a),(Initialized s))) . x
by A7, SCMFSA_M:2
.=
(Initialized s) . x
by A12, SCMFSA_2:63
.=
s . x
by A9, SCMFSA_M:2
;
verum end;
[#] FinSeq-Locations = FinSeq-Locations
;
hence
(IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations)
by A10, A8, SCMFSA_M:27; verum