let k be Element of NAT ; for s being State of 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 ; 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;
A1: Next (IC (s +* (Start-At ((IC s) + k)))) =
Next (il. (m + k))
by AMI_1:111
.=
il. ((m + k) + 1)
by NAT_1:39
.=
(il. (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
;
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 )
by AMI_5:36, NAT_1:33;
suppose
InsCode (CurInstr s) = 1
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Data-Location such that A5:
CurInstr s = da := db
by AMI_5:47;
A9:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A1, A5, AMI_3:8;
(
IncAddr (CurInstr s),
k = CurInstr s &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A5, Th5, AMI_3:8;
hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A2, A9, A6, AMI_5:26;
verum end; suppose
InsCode (CurInstr s) = 2
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Data-Location such that A10:
CurInstr s = AddTo da,
db
by AMI_5:48;
A14:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A1, A10, AMI_3:9;
(
IncAddr (CurInstr s),
k = CurInstr s &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A10, Th6, AMI_3:9;
hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A2, A14, A11, AMI_5:26;
verum end; suppose
InsCode (CurInstr s) = 3
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Data-Location such that A15:
CurInstr s = SubFrom da,
db
by AMI_5:49;
A19:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A1, A15, AMI_3:10;
(
IncAddr (CurInstr s),
k = CurInstr s &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A15, Th7, AMI_3:10;
hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A2, A19, A16, AMI_5:26;
verum end; suppose
InsCode (CurInstr s) = 4
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Data-Location such that A20:
CurInstr s = MultBy da,
db
by AMI_5:50;
A24:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A1, A20, AMI_3:11;
(
IncAddr (CurInstr s),
k = CurInstr s &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A20, Th8, AMI_3:11;
hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A2, A24, A21, AMI_5:26;
verum end; suppose
InsCode (CurInstr s) = 5
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))then consider da,
db being
Data-Location such that A25:
CurInstr s = Divide da,
db
by AMI_5:51;
A34:
IC (Exec (CurInstr s),(s +* (Start-At ((IC s) + k)))) = IC ((Exec (CurInstr s),s) +* (Start-At ((Next (IC s)) + k)))
by A1, A25, AMI_3:12;
(
IncAddr (CurInstr s),
k = CurInstr s &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A25, Th9, AMI_3:12;
hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A2, A34, A26, AMI_5:26;
verum end; suppose
InsCode (CurInstr s) = 6
;
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 such that A35:
CurInstr s = goto loc
by AMI_5:52;
A36:
IC (Exec (CurInstr s),s) = loc
by A35, AMI_3:13;
A38:
IncAddr (CurInstr s),
k = goto (loc + k)
by A35, Th10;
A39:
now let d be
Data-Location ;
(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 A38, AMI_3:13
.=
s . d
by AMI_5:80
.=
(Exec (CurInstr s),s) . d
by A35, AMI_3:13
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by AMI_5:80
;
verum end; IC (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) =
loc + k
by A38, AMI_3:13
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A36, AMI_1:111
;
hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
by A39, A37, AMI_5:26;
verum end; suppose
InsCode (CurInstr s) = 7
;
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 ,
da being
Data-Location such that A40:
CurInstr s = da =0_goto loc
by AMI_5:53;
A41:
IncAddr (CurInstr s),
k = da =0_goto (loc + k)
by A40, Th11;
now per cases
( s . da = 0 or s . da <> 0 )
;
suppose A42:
s . da = 0
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))A43:
now let d be
Data-Location ;
(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 A41, AMI_3:14
.=
s . d
by AMI_5:80
.=
(Exec (CurInstr s),s) . d
by A40, AMI_3:14
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by AMI_5:80
;
verum end; A45:
IC (Exec (CurInstr s),s) = loc
by A40, A42, AMI_3:14;
(s +* (Start-At ((IC s) + k))) . da = 0
by A42, AMI_5:80;
then IC (Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k)))) =
loc + k
by A41, AMI_3:14
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A45, AMI_1:111
;
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 A43, A44, AMI_5:26;
verum end; suppose A46:
s . da <> 0
;
Exec (IncAddr (CurInstr s),k),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))A48:
now let d be
Data-Location ;
(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 A41, AMI_3:14
.=
s . d
by AMI_5:80
.=
(Exec (CurInstr s),s) . d
by A40, AMI_3:14
.=
((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))) . d
by AMI_5:80
;
verum end;
(
(s +* (Start-At ((IC s) + k))) . da <> 0 &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A40, A46, AMI_3:14, AMI_5:80;
then
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 A1, A41, AMI_3:14;
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 A48, A47, AMI_5:26;
verum end; end; end; hence
Exec (IncAddr (CurInstr s),k),
(s +* (Start-At ((IC s) + k))) = (Following s) +* (Start-At ((IC (Following s)) + k))
;
verum end; suppose
InsCode (CurInstr s) = 8
;
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 ,
da being
Data-Location such that A49:
CurInstr s = da >0_goto loc
by AMI_5:54;
now per cases
( s . da > 0 or s . da <= 0 )
;
suppose A50:
s . da > 0
;
Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))A53:
IC (Exec (CurInstr s),s) = loc
by A49, A50, AMI_3:15;
(s +* (Start-At ((IC s) + k))) . da > 0
by A50, AMI_5:80;
then IC (Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k)))) =
loc + k
by AMI_3:15
.=
IC ((Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k)))
by A53, 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 A51, A52, AMI_5:26;
verum end; suppose A54:
s . da <= 0
;
Exec (da >0_goto (loc + k)),(s +* (Start-At ((IC s) + k))) = (Exec (CurInstr s),s) +* (Start-At ((IC (Exec (CurInstr s),s)) + k))
(
(s +* (Start-At ((IC s) + k))) . da <= 0 &
IC (Exec (CurInstr s),s) = Next (IC s) )
by A49, A54, AMI_3:15, AMI_5:80;
then
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 A1, AMI_3:15;
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 A56, A55, AMI_5:26;
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 A49, Th12;
verum end; end;