thus
SCM R is IC-relocable
verumproof
let I be
Instruction of
(SCM R);
AMISTD_2:def 4 I is IC-relocable
per cases
( I = [0,{},{}] or ex a, b being Data-Location of R st I = a := b or ex a, b being Data-Location of R st I = AddTo (a,b) or ex a, b being Data-Location of R st I = SubFrom (a,b) or ex a, b being Data-Location of R st I = MultBy (a,b) or ex i1 being Nat st I = goto (i1,R) or ex a being Data-Location of R ex i1 being Nat st I = a =0_goto i1 or ex a being Data-Location of R ex r being Element of R st I = a := r )
by SCMRING2:7;
suppose A1:
ex
i1 being
Nat st
I = goto (
i1,
R)
;
I is IC-relocable let j,
k be
Nat;
AMISTD_2:def 3 for b1 being set holds (IC (Exec ((IncAddr (I,j)),b1))) + k = IC (Exec ((IncAddr (I,(j + k))),(IncIC (b1,k))))let s1 be
State of
(SCM R);
(IC (Exec ((IncAddr (I,j)),s1))) + k = IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))set s2 =
IncIC (
s1,
k);
consider i1 being
Nat such that A2:
I = goto (
i1,
R)
by A1;
thus (IC (Exec ((IncAddr (I,j)),s1))) + k =
(IC (Exec ((goto ((j + i1),R)),s1))) + k
by A2, Th36
.=
(j + i1) + k
by SCMRING2:15
.=
IC (Exec ((goto (((j + i1) + k),R)),(IncIC (s1,k))))
by SCMRING2:15
.=
IC (Exec ((goto (((j + k) + i1),R)),(IncIC (s1,k))))
.=
IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))
by A2, Th36
;
verum end; suppose
ex
a being
Data-Location of
R ex
i1 being
Nat st
I = a =0_goto i1
;
I is IC-relocable then consider a being
Data-Location of
R,
i1 being
Nat such that A3:
I = a =0_goto i1
;
let j,
k be
Nat;
AMISTD_2:def 3 for b1 being set holds (IC (Exec ((IncAddr (I,j)),b1))) + k = IC (Exec ((IncAddr (I,(j + k))),(IncIC (b1,k))))let s1 be
State of
(SCM R);
(IC (Exec ((IncAddr (I,j)),s1))) + k = IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))set s2 =
IncIC (
s1,
k);
(
a <> IC &
dom ((IC ) .--> ((IC s1) + k)) = {(IC )} )
by Th2;
then
not
a in dom ((IC ) .--> ((IC s1) + k))
by TARSKI:def 1;
then A4:
s1 . a = (IncIC (s1,k)) . a
by FUNCT_4:11;
per cases
( s1 . a = 0. R or s1 . a <> 0. R )
;
suppose A5:
s1 . a = 0. R
;
(IC (Exec ((IncAddr (I,j)),s1))) + k = IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))thus (IC (Exec ((IncAddr (I,j)),s1))) + k =
(IC (Exec ((a =0_goto (j + i1)),s1))) + k
by A3, Th37
.=
(j + i1) + k
by A5, SCMRING2:16
.=
IC (Exec ((a =0_goto ((j + i1) + k)),(IncIC (s1,k))))
by A4, A5, SCMRING2:16
.=
IC (Exec ((a =0_goto ((j + k) + i1)),(IncIC (s1,k))))
.=
IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))
by A3, Th37
;
verum end; suppose A6:
s1 . a <> 0. R
;
(IC (Exec ((IncAddr (I,j)),s1))) + k = IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))A7:
IncAddr (
I,
j)
= a =0_goto (i1 + j)
by A3, Th37;
A8:
IncAddr (
I,
(j + k))
= a =0_goto (i1 + (j + k))
by A3, Th37;
IC in dom ((IC ) .--> ((IC s1) + k))
by TARSKI:def 1;
then A9:
IC (IncIC (s1,k)) =
((IC ) .--> ((IC s1) + k)) . (IC )
by FUNCT_4:13
.=
(IC s1) + k
by FUNCOP_1:72
;
thus (IC (Exec ((IncAddr (I,j)),s1))) + k =
((IC s1) + 1) + k
by A7, A6, SCMRING2:16
.=
((IC s1) + 1) + k
.=
(IC (IncIC (s1,k))) + 1
by A9
.=
IC (Exec ((IncAddr (I,(j + k))),(IncIC (s1,k))))
by A8, A6, A4, SCMRING2:16
;
verum end; end; end; end;
end;