let i be Instruction of SCM+FSA ; :: thesis: 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 ; :: thesis: ( s1,s2 equal_outside NAT implies Exec i,s1, Exec i,s2 equal_outside NAT )
assume A1:
s1,s2 equal_outside NAT
; :: thesis: Exec i,s1, Exec i,s2 equal_outside NAT
A2:
InsCode i <= 11 + 1
by SCMFSA_2:35;
A3:
( not InsCode i <= 10 + 1 or InsCode i <= 10 or InsCode i = 11 )
by NAT_1:8;
A4:
( not InsCode i <= 9 + 1 or InsCode i <= 8 + 1 or InsCode i = 10 )
by NAT_1:8;
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 A2, A3, A4, NAT_1:8, NAT_1:33;
suppose
InsCode i = 1
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A5:
i = da := db
by SCMFSA_2:54;
IC (Exec i,s1) =
Next (IC s1)
by A5, SCMFSA_2:89
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A5, SCMFSA_2:89
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A6, A9, Th28;
:: thesis: verum end; suppose
InsCode i = 2
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A10:
i = AddTo da,
db
by SCMFSA_2:55;
IC (Exec i,s1) =
Next (IC s1)
by A10, SCMFSA_2:90
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A10, SCMFSA_2:90
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A11, A14, Th28;
:: thesis: verum end; suppose
InsCode i = 3
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A15:
i = SubFrom da,
db
by SCMFSA_2:56;
IC (Exec i,s1) =
Next (IC s1)
by A15, SCMFSA_2:91
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A15, SCMFSA_2:91
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A16, A19, Th28;
:: thesis: verum end; suppose
InsCode i = 4
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A20:
i = MultBy da,
db
by SCMFSA_2:57;
IC (Exec i,s1) =
Next (IC s1)
by A20, SCMFSA_2:92
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A20, SCMFSA_2:92
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A21, A24, Th28;
:: thesis: verum end; suppose
InsCode i = 5
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da,
db being
Int-Location such that A25:
i = Divide da,
db
by SCMFSA_2:58;
IC (Exec i,s1) =
Next (IC s1)
by A25, SCMFSA_2:93
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A25, SCMFSA_2:93
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A26, A30, Th28;
:: thesis: verum end; suppose
InsCode i = 9
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A48:
i = da := f,
db
by SCMFSA_2:62;
A49:
now let c be
Int-Location ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( c = da or c <> da )
;
suppose A50:
c = da
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1then consider m being
Element of
NAT such that A51:
m = abs (s1 . db)
and A52:
(Exec (da := f,db),s1) . c = (s1 . f) /. m
by SCMFSA_2:98;
consider n being
Element of
NAT such that A53:
n = abs (s2 . db)
and A54:
(Exec (da := f,db),s2) . c = (s2 . f) /. n
by A50, SCMFSA_2:98;
(
m = n &
s1 . f = s2 . f )
by A1, A51, A53, Th30, Th31;
hence
(Exec i,s1) . c = (Exec i,s2) . c
by A48, A52, A54;
:: thesis: verum end; end; end; IC (Exec i,s1) =
Next (IC s1)
by A48, SCMFSA_2:98
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A48, SCMFSA_2:98
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A49, A56, Th28;
:: thesis: verum end; suppose
InsCode i = 10
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A57:
i = f,
db := da
by SCMFSA_2:63;
A59:
now let g be
FinSeq-Location ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( g = f or g <> f )
;
suppose A60:
g = f
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1consider m being
Element of
NAT such that A61:
m = abs (s1 . db)
and A62:
(Exec (f,db := da),s1) . f = (s1 . f) +* m,
(s1 . da)
by SCMFSA_2:99;
consider n being
Element of
NAT such that A63:
n = abs (s2 . db)
and A64:
(Exec (f,db := da),s2) . f = (s2 . f) +* n,
(s2 . da)
by SCMFSA_2:99;
(
m = n &
s1 . da = s2 . da &
s1 . f = s2 . f )
by A1, A61, A63, Th30, Th31;
hence
(Exec i,s1) . g = (Exec i,s2) . g
by A57, A60, A62, A64;
:: thesis: verum end; end; end; IC (Exec i,s1) =
Next (IC s1)
by A57, SCMFSA_2:99
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A57, SCMFSA_2:99
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A58, A59, Th28;
:: thesis: verum end; suppose
InsCode i = 11
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da being
Int-Location ,
f being
FinSeq-Location such that A66:
i = da :=len f
by SCMFSA_2:64;
IC (Exec i,s1) =
Next (IC s1)
by A66, SCMFSA_2:100
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A66, SCMFSA_2:100
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A67, A70, Th28;
:: thesis: verum end; suppose
InsCode i = 12
;
:: thesis: Exec i,s1, Exec i,s2 equal_outside NAT then consider da being
Int-Location ,
f being
FinSeq-Location such that A71:
i = f :=<0,...,0> da
by SCMFSA_2:65;
A73:
now let g be
FinSeq-Location ;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1per cases
( g = f or g <> f )
;
suppose A74:
g = f
;
:: thesis: (Exec i,s1) . b1 = (Exec i,s2) . b1consider m being
Element of
NAT such that A75:
m = abs (s1 . da)
and A76:
(Exec (f :=<0,...,0> da),s1) . f = m |-> 0
by SCMFSA_2:101;
consider n being
Element of
NAT such that A77:
n = abs (s2 . da)
and A78:
(Exec (f :=<0,...,0> da),s2) . f = n |-> 0
by SCMFSA_2:101;
thus
(Exec i,s1) . g = (Exec i,s2) . g
by A1, A71, A74, A75, A76, A77, A78, Th30;
:: thesis: verum end; end; end; IC (Exec i,s1) =
Next (IC s1)
by A71, SCMFSA_2:101
.=
Next (IC s2)
by A1, AMI_1:121
.=
IC (Exec i,s2)
by A71, SCMFSA_2:101
;
hence
Exec i,
s1,
Exec i,
s2 equal_outside NAT
by A72, A73, Th28;
:: thesis: verum end; end;