let s be State of SCM+FSA; :: thesis: 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; :: thesis: 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; :: thesis: 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 ; :: thesis: ( 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 ; :: thesis: (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;

hence (IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations) by A10, A8, SCMFSA_M:27; :: thesis: verum

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; :: thesis: 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; :: thesis: 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 ; :: thesis: ( 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 ; :: thesis: (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 :: thesis: for x being FinSeq-Location st x in FinSeq-Locations holds

(IExec ((times (a,I)),p,s)) . x = s . x

A9:
DataPart s = DataPart (Initialized s)
by A2, SCMFSA_M:19;(IExec ((times (a,I)),p,s)) . x = s . x

let x be FinSeq-Location ; :: thesis: ( x in FinSeq-Locations implies (IExec ((times (a,I)),p,s)) . x = s . x )

assume x in FinSeq-Locations ; :: thesis: (IExec ((times (a,I)),p,s)) . x = s . x

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: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 ; :: thesis: verum

end;assume x in FinSeq-Locations ; :: thesis: (IExec ((times (a,I)),p,s)) . x = s . x

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: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 ; :: thesis: verum

A10: now :: thesis: for x being Int-Location st x in UsedILoc I holds

(IExec ((times (a,I)),p,s)) . x = s . x

[#] FinSeq-Locations = FinSeq-Locations
;(IExec ((times (a,I)),p,s)) . x = s . x

let x be Int-Location; :: thesis: ( 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 ; :: thesis: (IExec ((times (a,I)),p,s)) . x = s . x

then 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 ; :: thesis: verum

end;A11: not 1 -stRWNotIn ({a} \/ (UsedILoc I)) in {a} \/ (UsedILoc I) by SCMFSA_M:25;

assume x in UsedILoc I ; :: thesis: (IExec ((times (a,I)),p,s)) . x = s . x

then 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 ; :: thesis: verum

hence (IExec ((times (a,I)),p,s)) | ((UsedILoc I) \/ FinSeq-Locations) = s | ((UsedILoc I) \/ FinSeq-Locations) by A10, A8, SCMFSA_M:27; :: thesis: verum