let i be Instruction of SCM+FSA ; for s1, s2 being State of SCM+FSA st s1,s2 equal_outside NAT holds
Exec i,s1, Exec i,s2 equal_outside NAT
let s1, s2 be State of SCM+FSA ; ( s1,s2 equal_outside NAT implies Exec i,s1, Exec i,s2 equal_outside NAT )
assume A1:
s1,s2 equal_outside NAT
; Exec i,s1, Exec i,s2 equal_outside NAT
A2:
( not InsCode i <= 9 + 1 or InsCode i <= 8 + 1 or InsCode i = 10 )
by NAT_1:8;
A3:
( not InsCode i <= 10 + 1 or InsCode i <= 10 or InsCode i = 11 )
by NAT_1:8;
A4:
InsCode i <= 11 + 1
by SCMFSA_2:35;
per cases
( InsCode i = 0 or InsCode i = 1 or InsCode i = 2 or InsCode i = 3 or InsCode i = 4 or InsCode i = 5 or InsCode i = 6 or InsCode i = 7 or InsCode i = 8 or InsCode i = 9 or InsCode i = 10 or InsCode i = 11 or InsCode i = 12 )
by A4, A3, A2, NAT_1:8, NAT_1:33;
suppose
InsCode i = 1
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A6:
i = da := db
by SCMFSA_2:54;
IC (Exec i,s1) =
succ (IC s1)
by A6, SCMFSA_2:89
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A6, SCMFSA_2:89
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A7, A10, SCMFSA10:91;
verum end; suppose
InsCode i = 2
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A11:
i = AddTo da,
db
by SCMFSA_2:55;
IC (Exec i,s1) =
succ (IC s1)
by A11, SCMFSA_2:90
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A11, SCMFSA_2:90
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A12, A15, SCMFSA10:91;
verum end; suppose
InsCode i = 3
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A16:
i = SubFrom da,
db
by SCMFSA_2:56;
IC (Exec i,s1) =
succ (IC s1)
by A16, SCMFSA_2:91
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A16, SCMFSA_2:91
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A17, A20, SCMFSA10:91;
verum end; suppose
InsCode i = 4
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A21:
i = MultBy da,
db
by SCMFSA_2:57;
IC (Exec i,s1) =
succ (IC s1)
by A21, SCMFSA_2:92
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A21, SCMFSA_2:92
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A22, A25, SCMFSA10:91;
verum end; suppose
InsCode i = 5
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A26:
i = Divide da,
db
by SCMFSA_2:58;
IC (Exec i,s1) =
succ (IC s1)
by A26, SCMFSA_2:93
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A26, SCMFSA_2:93
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A27, A31, SCMFSA10:91;
verum end; suppose
InsCode i = 9
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A49:
i = da := f,
db
by SCMFSA_2:62;
A50:
now let c be
Int-Location ;
(Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( c = da or c <> da )
;
suppose A51:
c = da
;
(Exec i,s1) . b1 = (Exec i,s2) . b1then consider n being
Element of
NAT such that A52:
n = abs (s2 . db)
and A53:
(Exec (da := f,db),s2) . c = (s2 . f) /. n
by SCMFSA_2:98;
consider m being
Element of
NAT such that A54:
m = abs (s1 . db)
and A55:
(Exec (da := f,db),s1) . c = (s1 . f) /. m
by A51, SCMFSA_2:98;
m = n
by A1, A54, A52, SCMFSA10:92;
hence
(Exec i,s1) . c = (Exec i,s2) . c
by A1, A49, A55, A53, SCMFSA10:93;
verum end; end; end; IC (Exec i,s1) =
succ (IC s1)
by A49, SCMFSA_2:98
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A49, SCMFSA_2:98
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A50, A57, SCMFSA10:91;
verum end; suppose
InsCode i = 10
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A58:
i = f,
db := da
by SCMFSA_2:63;
A59:
now let g be
FinSeq-Location ;
(Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( g = f or g <> f )
;
suppose A60:
g = f
;
(Exec i,s1) . b1 = (Exec i,s2) . b1A61:
s1 . da = s2 . da
by A1, SCMFSA10:92;
consider n being
Element of
NAT such that A62:
n = abs (s2 . db)
and A63:
(Exec (f,db := da),s2) . f = (s2 . f) +* n,
(s2 . da)
by SCMFSA_2:99;
consider m being
Element of
NAT such that A64:
m = abs (s1 . db)
and A65:
(Exec (f,db := da),s1) . f = (s1 . f) +* m,
(s1 . da)
by SCMFSA_2:99;
m = n
by A1, A64, A62, SCMFSA10:92;
hence
(Exec i,s1) . g = (Exec i,s2) . g
by A1, A58, A60, A65, A63, A61, SCMFSA10:93;
verum end; end; end; IC (Exec i,s1) =
succ (IC s1)
by A58, SCMFSA_2:99
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A58, SCMFSA_2:99
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A67, A59, SCMFSA10:91;
verum end; suppose
InsCode i = 11
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da being
Int-Location ,
f being
FinSeq-Location such that A68:
i = da :=len f
by SCMFSA_2:64;
IC (Exec i,s1) =
succ (IC s1)
by A68, SCMFSA_2:100
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A68, SCMFSA_2:100
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A69, A72, SCMFSA10:91;
verum end; suppose
InsCode i = 12
;
Exec i,s1, Exec i,s2 equal_outside NAT then consider da being
Int-Location ,
f being
FinSeq-Location such that A73:
i = f :=<0,...,0> da
by SCMFSA_2:65;
A74:
now let g be
FinSeq-Location ;
(Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( g = f or g <> f )
;
suppose A75:
g = f
;
(Exec i,s1) . b1 = (Exec i,s2) . b1
( ex
m being
Element of
NAT st
(
m = abs (s1 . da) &
(Exec (f :=<0,...,0> da),s1) . f = m |-> 0 ) & ex
n being
Element of
NAT st
(
n = abs (s2 . da) &
(Exec (f :=<0,...,0> da),s2) . f = n |-> 0 ) )
by SCMFSA_2:101;
hence
(Exec i,s1) . g = (Exec i,s2) . g
by A1, A73, A75, SCMFSA10:92;
verum end; end; end; IC (Exec i,s1) =
succ (IC s1)
by A73, SCMFSA_2:101
.=
succ (IC s2)
by A1, COMPOS_1:24
.=
IC (Exec i,s2)
by A73, SCMFSA_2:101
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A77, A74, SCMFSA10:91;
verum end; end;