let s be State of SCM+FSA ; for a being read-write Int-Location
for bb, cc being Int-Location
for I being Program of SCM+FSA st s . (intloc 0 ) = 1 holds
for aux being read-write Int-Location st aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I)) holds
DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb))
let a be read-write Int-Location ; for bb, cc being Int-Location
for I being Program of SCM+FSA st s . (intloc 0 ) = 1 holds
for aux being read-write Int-Location st aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I)) holds
DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb))
let bb, cc be Int-Location ; for I being Program of SCM+FSA st s . (intloc 0 ) = 1 holds
for aux being read-write Int-Location st aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I)) holds
DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb))
let I be Program of SCM+FSA ; ( s . (intloc 0 ) = 1 implies for aux being read-write Int-Location st aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I)) holds
DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) )
assume A1:
s . (intloc 0 ) = 1
; for aux being read-write Int-Location st aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I)) holds
DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb))
( cc = intloc 0 or not cc is read-only )
by SF_MASTR:def 5;
then A2:
(Initialized s) . cc = s . cc
by A1, SCMFSA6C:3;
set i3 = a := bb;
let aux be read-write Int-Location ; ( aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I)) implies DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) )
assume A3:
aux = 1 -stRWNotIn ({a,bb,cc} \/ (UsedIntLoc I))
; DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb))
bb in {a,bb,cc}
by ENUMSET1:def 1;
then
bb in {a,bb,cc} \/ (UsedIntLoc I)
by XBOOLE_0:def 3;
then A4:
bb <> aux
by A3, SFMASTR1:21;
set s2 = (s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb);
A5:
aux in dom s
by SCMFSA_2:66;
a in {a,bb,cc}
by ENUMSET1:def 1;
then
a in {a,bb,cc} \/ (UsedIntLoc I)
by XBOOLE_0:def 3;
then A6:
a <> aux
by A3, SFMASTR1:21;
then A7: ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . aux =
(s +* aux,(((s . cc) - (s . bb)) + 1)) . aux
by FUNCT_7:34
.=
((s . cc) - (s . bb)) + 1
by A5, FUNCT_7:33
;
set i2 = AddTo aux,(intloc 0 );
set i1 = SubFrom aux,bb;
set i0 = aux := cc;
set s1 = IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s;
A8: (IExec ((aux := cc) ';' (SubFrom aux,bb)),s) . (intloc 0 ) =
(Exec (SubFrom aux,bb),(Exec (aux := cc),(Initialized s))) . (intloc 0 )
by SCMFSA6C:9
.=
(Exec (aux := cc),(Initialized s)) . (intloc 0 )
by SCMFSA_2:91
.=
(Initialized s) . (intloc 0 )
by SCMFSA_2:89
.=
1
by SCMFSA6C:3
;
A9:
a in dom (s +* aux,(((s . cc) - (s . bb)) + 1))
by SCMFSA_2:66;
( bb = intloc 0 or not bb is read-only )
by SF_MASTR:def 5;
then A10:
(Initialized s) . bb = s . bb
by A1, SCMFSA6C:3;
A11: (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . a =
(Exec (a := bb),(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s)) . a
by SCMFSA6C:7
.=
(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s) . bb
by SCMFSA_2:89
.=
(Exec (AddTo aux,(intloc 0 )),(IExec ((aux := cc) ';' (SubFrom aux,bb)),s)) . bb
by SCMFSA6C:7
.=
(IExec ((aux := cc) ';' (SubFrom aux,bb)),s) . bb
by A4, SCMFSA_2:90
.=
(Exec (SubFrom aux,bb),(Exec (aux := cc),(Initialized s))) . bb
by SCMFSA6C:9
.=
(Exec (aux := cc),(Initialized s)) . bb
by A4, SCMFSA_2:91
.=
s . bb
by A4, A10, SCMFSA_2:89
;
A12: (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . aux =
(Exec (a := bb),(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s)) . aux
by SCMFSA6C:7
.=
(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s) . aux
by A6, SCMFSA_2:89
.=
(Exec (AddTo aux,(intloc 0 )),(IExec ((aux := cc) ';' (SubFrom aux,bb)),s)) . aux
by SCMFSA6C:7
.=
((IExec ((aux := cc) ';' (SubFrom aux,bb)),s) . aux) + 1
by A8, SCMFSA_2:90
.=
((Exec (SubFrom aux,bb),(Exec (aux := cc),(Initialized s))) . aux) + 1
by SCMFSA6C:9
.=
(((Exec (aux := cc),(Initialized s)) . aux) - ((Exec (aux := cc),(Initialized s)) . bb)) + 1
by SCMFSA_2:91
.=
(((Initialized s) . cc) - ((Exec (aux := cc),(Initialized s)) . bb)) + 1
by SCMFSA_2:89
.=
((s . cc) - (s . bb)) + 1
by A4, A2, A10, SCMFSA_2:89
;
now hereby for x being FinSeq-Location holds (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . x = ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . x
let x be
Int-Location ;
(IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . b1 = ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . b1per cases
( x = a or x = aux or ( x <> aux & x <> a ) )
;
suppose A13:
(
x <> aux &
x <> a )
;
(IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . b1 = ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . b1then A14:
((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . x =
(s +* aux,(((s . cc) - (s . bb)) + 1)) . x
by FUNCT_7:34
.=
s . x
by A13, FUNCT_7:34
;
A15:
(
x = intloc 0 or not
x is
read-only )
by SF_MASTR:def 5;
(IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . x =
(Exec (a := bb),(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s)) . x
by SCMFSA6C:7
.=
(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s) . x
by A13, SCMFSA_2:89
.=
(Exec (AddTo aux,(intloc 0 )),(IExec ((aux := cc) ';' (SubFrom aux,bb)),s)) . x
by SCMFSA6C:7
.=
(IExec ((aux := cc) ';' (SubFrom aux,bb)),s) . x
by A13, SCMFSA_2:90
.=
(Exec (SubFrom aux,bb),(Exec (aux := cc),(Initialized s))) . x
by SCMFSA6C:9
.=
(Exec (aux := cc),(Initialized s)) . x
by A13, SCMFSA_2:91
.=
(Initialized s) . x
by A13, SCMFSA_2:89
.=
s . x
by A1, A15, SCMFSA6C:3
;
hence
(IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . x = ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . x
by A14;
verum end; end;
end; let x be
FinSeq-Location ;
(IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . x = ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . xthus (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) . x =
(Exec (a := bb),(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s)) . x
by SCMFSA6C:8
.=
(IExec (((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))),s) . x
by SCMFSA_2:89
.=
(Exec (AddTo aux,(intloc 0 )),(IExec ((aux := cc) ';' (SubFrom aux,bb)),s)) . x
by SCMFSA6C:8
.=
(IExec ((aux := cc) ';' (SubFrom aux,bb)),s) . x
by SCMFSA_2:90
.=
(Exec (SubFrom aux,bb),(Exec (aux := cc),(Initialized s))) . x
by SCMFSA6C:10
.=
(Exec (aux := cc),(Initialized s)) . x
by SCMFSA_2:91
.=
(Initialized s) . x
by SCMFSA_2:89
.=
s . x
by SCMFSA6C:3
.=
(s +* aux,(((s . cc) - (s . bb)) + 1)) . x
by FUNCT_7:34, SCMFSA_2:83
.=
((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb)) . x
by FUNCT_7:34, SCMFSA_2:83
;
verum end;
hence
DataPart (IExec ((((aux := cc) ';' (SubFrom aux,bb)) ';' (AddTo aux,(intloc 0 ))) ';' (a := bb)),s) = DataPart ((s +* aux,(((s . cc) - (s . bb)) + 1)) +* a,(s . bb))
by SCMFSA6A:38; verum