let k be Element of NAT ; :: thesis: for s being State of SCM+FSA holds Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
let s be State of SCM+FSA ; :: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
set INS = CurInstr s;
reconsider m = IC s as Element of NAT by ORDINAL1:def 13;
A3: Next (IC (s +* (Start-At ((IC s) + k)))) =
Next (insloc (m + k))
by AMI_1:111
.=
insloc ((m + k) + 1)
by NAT_1:39
.=
insloc ((m + 1) + k)
.=
(insloc (m + 1)) + k
.=
(Next (IC s)) + k
by NAT_1:39
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by AMI_1:111
;
A5:
InsCode (CurInstr s) <= 11 + 1
by SCMFSA_2:35;
A6:
( not InsCode (CurInstr s) <= 10 + 1 or InsCode (CurInstr s) <= 10 or InsCode (CurInstr s) = 11 )
by NAT_1:8;
A7:
( not InsCode (CurInstr s) <= 9 + 1 or InsCode (CurInstr s) <= 8 + 1 or InsCode (CurInstr s) = 10 )
by NAT_1:8;
per cases
( InsCode (CurInstr s) = 0 or InsCode (CurInstr s) = 1 or InsCode (CurInstr s) = 2 or InsCode (CurInstr s) = 3 or InsCode (CurInstr s) = 4 or InsCode (CurInstr s) = 5 or InsCode (CurInstr s) = 6 or InsCode (CurInstr s) = 7 or InsCode (CurInstr s) = 8 or InsCode (CurInstr s) = 9 or InsCode (CurInstr s) = 10 or InsCode (CurInstr s) = 11 or InsCode (CurInstr s) = 12 )
by A5, A6, A7, NAT_1:8, NAT_1:33;
suppose
InsCode (CurInstr s) = 1
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Int-Location such that A11:
CurInstr s = da := db
by SCMFSA_2:54;
A12:
IncAddr (CurInstr s),
k = CurInstr s
by A11, Th9;
A13:
IC (Exec (CurInstr s),s) = Next (IC s)
by A11, SCMFSA_2:89;
A14:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A11, SCMFSA_2:89;
A15:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A11, A12, SCMFSA_2:89
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A11, SCMFSA_2:89
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A12, A13, A14, A15, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 2
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Int-Location such that A18:
CurInstr s = AddTo da,
db
by SCMFSA_2:55;
A19:
IncAddr (CurInstr s),
k = CurInstr s
by A18, Th10;
A20:
IC (Exec (CurInstr s),s) = Next (IC s)
by A18, SCMFSA_2:90;
A21:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A18, SCMFSA_2:90;
A22:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A18, A19, SCMFSA_2:90
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A18, SCMFSA_2:90
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A19, A20, A21, A22, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 3
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Int-Location such that A25:
CurInstr s = SubFrom da,
db
by SCMFSA_2:56;
A26:
IncAddr (CurInstr s),
k = CurInstr s
by A25, Th11;
A27:
IC (Exec (CurInstr s),s) = Next (IC s)
by A25, SCMFSA_2:91;
A28:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A25, SCMFSA_2:91;
A29:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A25, A26, SCMFSA_2:91
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A25, SCMFSA_2:91
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A26, A27, A28, A29, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 4
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Int-Location such that A32:
CurInstr s = MultBy da,
db
by SCMFSA_2:57;
A33:
IncAddr (CurInstr s),
k = CurInstr s
by A32, Th12;
A34:
IC (Exec (CurInstr s),s) = Next (IC s)
by A32, SCMFSA_2:92;
A35:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A32, SCMFSA_2:92;
A36:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A32, A33, SCMFSA_2:92
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A32, SCMFSA_2:92
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A33, A34, A35, A36, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 5
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Int-Location such that A39:
CurInstr s = Divide da,
db
by SCMFSA_2:58;
A40:
IncAddr (CurInstr s),
k = CurInstr s
by A39, Th13;
A41:
IC (Exec (CurInstr s),s) = Next (IC s)
by A39, SCMFSA_2:93;
A42:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A39, SCMFSA_2:93;
A43:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A39, A40, SCMFSA_2:93
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A39, SCMFSA_2:93
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A40, A41, A42, A43, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 6
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider loc being
Instruction-Location of
SCM+FSA such that A51:
CurInstr s = goto loc
by SCMFSA_2:59;
A52:
IncAddr (CurInstr s),
k = goto (loc + k)
by A51, Th14;
A53:
IC (Exec (CurInstr s),s) = loc
by A51, SCMFSA_2:95;
A54:
IC (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) =
loc + k
by A52, SCMFSA_2:95
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A53, AMI_1:111
;
A55:
now let d be
Int-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A52, SCMFSA_2:95
.=
s . d
by SCMFSA_3:11
.=
(Exec (CurInstr s),s) . d
by A51, SCMFSA_2:95
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:11
;
:: thesis: verum end; A56:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A52, SCMFSA_2:95
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A51, SCMFSA_2:95
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A54, A55, A56, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 7
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider loc being
Instruction-Location of
SCM+FSA ,
da being
Int-Location such that A57:
CurInstr s = da =0_goto loc
by SCMFSA_2:60;
A58:
IncAddr (CurInstr s),
k = da =0_goto (loc + k)
by A57, Th15;
now per cases
( s . da = 0 or s . da <> 0 )
;
suppose A59:
s . da = 0
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))then A60:
(s +* (Start-At ((IC s) + k))) . da = 0
by SCMFSA_3:11;
A61:
IC (Exec (CurInstr s),s) = loc
by A57, A59, SCMFSA_2:96;
A62:
IC (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) =
loc + k
by A58, A60, SCMFSA_2:96
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A61, AMI_1:111
;
A63:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A58, SCMFSA_2:96
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A57, SCMFSA_2:96
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; A64:
now let d be
Int-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A58, SCMFSA_2:96
.=
s . d
by SCMFSA_3:11
.=
(Exec (CurInstr s),s) . d
by A57, SCMFSA_2:96
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:11
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))
by A62, A63, A64, SCMFSA_2:86;
:: thesis: verum end; suppose A65:
s . da <> 0
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))then A66:
(s +* (Start-At ((IC s) + k))) . da <> 0
by SCMFSA_3:11;
IC (Exec (CurInstr s),s) = Next (IC s)
by A57, A65, SCMFSA_2:96;
then A67:
IC (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A3, A58, A66, SCMFSA_2:96;
A68:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A58, SCMFSA_2:96
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A57, SCMFSA_2:96
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; A69:
now let d be
Int-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A58, SCMFSA_2:96
.=
s . d
by SCMFSA_3:11
.=
(Exec (CurInstr s),s) . d
by A57, SCMFSA_2:96
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:11
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))
by A67, A68, A69, SCMFSA_2:86;
:: thesis: verum end; end; end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 8
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider loc being
Instruction-Location of
SCM+FSA ,
da being
Int-Location such that A70:
CurInstr s = da >0_goto loc
by SCMFSA_2:61;
now per cases
( s . da > 0 or s . da <= 0 )
;
suppose A71:
s . da > 0
;
:: thesis: Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))then A72:
(s +* (Start-At ((IC s) + k))) . da > 0
by SCMFSA_3:11;
A73:
IC (Exec (CurInstr s),s) = loc
by A70, A71, SCMFSA_2:97;
A74:
IC (Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k)))) =
loc + k
by A72, SCMFSA_2:97
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A73, AMI_1:111
;
hence
Exec (da >0_goto (loc + k)),
(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))
by A74, A75, A76, SCMFSA_2:86;
:: thesis: verum end; suppose A77:
s . da <= 0
;
:: thesis: Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))then A78:
(s +* (Start-At ((IC s) + k))) . da <= 0
by SCMFSA_3:11;
IC (Exec (CurInstr s),s) = Next (IC s)
by A70, A77, SCMFSA_2:97;
then A79:
IC (Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A3, A78, SCMFSA_2:97;
hence
Exec (da >0_goto (loc + k)),
(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))
by A79, A80, A81, SCMFSA_2:86;
:: thesis: verum end; end; end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A70, Th16;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 9
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A82:
CurInstr s = da := f,
db
by SCMFSA_2:62;
A83:
IncAddr (CurInstr s),
k = CurInstr s
by A82, Th17;
A84:
IC (Exec (CurInstr s),s) = Next (IC s)
by A82, SCMFSA_2:98;
A85:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A82, SCMFSA_2:98;
A86:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A82, A83, SCMFSA_2:98
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A82, SCMFSA_2:98
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A83, A84, A85, A86, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 10
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A93:
CurInstr s = f,
db := da
by SCMFSA_2:63;
A94:
IncAddr (CurInstr s),
k = CurInstr s
by A93, Th18;
A95:
IC (Exec (CurInstr s),s) = Next (IC s)
by A93, SCMFSA_2:99;
A96:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A93, SCMFSA_2:99;
A97:
now let d be
Int-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A93, A94, SCMFSA_2:99
.=
s . d
by SCMFSA_3:11
.=
(Exec (CurInstr s),s) . d
by A93, SCMFSA_2:99
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:11
;
:: thesis: verum end; now let g be
FinSeq-Location ;
:: thesis: (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) . b1 = ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k))) . b1consider m being
Element of
NAT such that A98:
m = abs (s . db)
and A99:
(Exec (CurInstr s),s) . f = (s . f) +* m,
(s . da)
by A93, SCMFSA_2:99;
consider m' being
Element of
NAT such that A100:
m' = abs ((s +* (Start-At ((IC s) + k))) . db)
and A101:
(Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) . f = ((s +* (Start-At ((IC s) + k))) . f) +* m',
((s +* (Start-At ((IC s) + k))) . da)
by A93, SCMFSA_2:99;
per cases
( f = g or f <> g )
;
suppose A102:
f = g
;
:: thesis: (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) . b1 = ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k))) . b1A103:
(s +* (Start-At ((IC s) + k))) . f = s . f
by SCMFSA_3:12;
(s +* (Start-At ((IC s) + k))) . db = s . db
by SCMFSA_3:11;
hence (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) . g =
(s . f) +* m,
(s . da)
by A98, A100, A101, A102, A103, SCMFSA_3:11
.=
((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k))) . g
by A99, A102, SCMFSA_3:12
;
:: thesis: verum end; end; end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A94, A95, A96, A97, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 11
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da being
Int-Location ,
f being
FinSeq-Location such that A105:
CurInstr s = da :=len f
by SCMFSA_2:64;
A106:
IncAddr (CurInstr s),
k = CurInstr s
by A105, Th19;
A107:
IC (Exec (CurInstr s),s) = Next (IC s)
by A105, SCMFSA_2:100;
A108:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A105, SCMFSA_2:100;
A109:
now let d be
FinSeq-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A105, A106, SCMFSA_2:100
.=
s . d
by SCMFSA_3:12
.=
(Exec (CurInstr s),s) . d
by A105, SCMFSA_2:100
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:12
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A106, A107, A108, A109, SCMFSA_2:86;
:: thesis: verum end; suppose
InsCode (CurInstr s) = 12
;
:: thesis: Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da being
Int-Location ,
f being
FinSeq-Location such that A112:
CurInstr s = f :=<0,...,0> da
by SCMFSA_2:65;
A113:
IncAddr (CurInstr s),
k = CurInstr s
by A112, Th20;
A114:
IC (Exec (CurInstr s),s) = Next (IC s)
by A112, SCMFSA_2:101;
A115:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A3, A112, SCMFSA_2:101;
A116:
now let d be
Int-Location ;
:: thesis: (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d = ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . dthus (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) . d =
(s +* (Start-At ((IC s) + k))) . d
by A112, A113, SCMFSA_2:101
.=
s . d
by SCMFSA_3:11
.=
(Exec (CurInstr s),s) . d
by A112, SCMFSA_2:101
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by SCMFSA_3:11
;
:: thesis: verum end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A4, A113, A114, A115, A116, SCMFSA_2:86;
:: thesis: verum end; end;