set D = Int-Locations \/ FinSeq-Locations;
let s1, s2 be State of SCM+FSA; for n being Element of NAT
for i being Instruction of SCM+FSA st (IC s1) + n = IC s2 & DataPart s1 = DataPart s2 holds
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )
let n be Element of NAT ; for i being Instruction of SCM+FSA st (IC s1) + n = IC s2 & DataPart s1 = DataPart s2 holds
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )
let i be Instruction of SCM+FSA; ( (IC s1) + n = IC s2 & DataPart s1 = DataPart s2 implies ( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) ) )
assume that
A1:
(IC s1) + n = IC s2
and
A2:
DataPart s1 = DataPart s2
; ( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )
reconsider k1 = IC s1 as Element of NAT ;
A3: (succ (IC s1)) + n =
(k1 + 1) + n
by NAT_1:39
.=
(k1 + n) + 1
.=
succ (IC s2)
by A1, NAT_1:39
;
A4:
now set I =
InsCode i;
assume that A5:
(
InsCode i < 6 or 8
< InsCode i )
and A6:
InsCode i <> 0
;
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
not
InsCode i in {6,7,8}
then A8:
IncAddr (
i,
n)
= i
by SCMFSA_4:30;
A9:
not
InsCode i in {0,6,7,8}
then
IC (Exec (i,s1)) = succ (IC s1)
by Th23;
hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A3, A9, A8, Th23;
verum end;
A11:
( not InsCode i <= 9 + 1 or InsCode i <= 8 + 1 or InsCode i = 10 )
by NAT_1:8;
A12:
( not InsCode i <= 10 + 1 or InsCode i <= 10 or InsCode i = 11 )
by NAT_1:8;
A13:
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 A13, A12, A11, NAT_1:8, NAT_1:33;
suppose
InsCode i = 0
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )then A14:
i = halt SCM+FSA
by SCMFSA_2:122;
then
(
Exec (
i,
s1)
= s1 &
Exec (
i,
s2)
= s2 )
by EXTPRO_1:def 3;
hence
(
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) &
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )
by A1, A2, A14, SCMFSA_4:8;
verum end; suppose A15:
InsCode i = 1
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da,
db being
Int-Location such that A16:
i = da := db
by A15, SCMFSA_2:54;
A17:
IncAddr (
i,
n)
= i
by A16, SCMFSA_4:9;
now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A16, SCMFSA_2:89
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A16, A17, SCMFSA_2:89
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A18, Th38;
verum end; suppose A21:
InsCode i = 2
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da,
db being
Int-Location such that A22:
i = AddTo (
da,
db)
by A21, SCMFSA_2:55;
A23:
IncAddr (
i,
n)
= i
by A22, SCMFSA_4:10;
now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A22, SCMFSA_2:90
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A22, A23, SCMFSA_2:90
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A24, Th38;
verum end; suppose A27:
InsCode i = 3
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da,
db being
Int-Location such that A28:
i = SubFrom (
da,
db)
by A27, SCMFSA_2:56;
A29:
IncAddr (
i,
n)
= i
by A28, SCMFSA_4:11;
now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A28, SCMFSA_2:91
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A28, A29, SCMFSA_2:91
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A30, Th38;
verum end; suppose A33:
InsCode i = 4
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da,
db being
Int-Location such that A34:
i = MultBy (
da,
db)
by A33, SCMFSA_2:57;
A35:
IncAddr (
i,
n)
= i
by A34, SCMFSA_4:12;
now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A34, SCMFSA_2:92
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A34, A35, SCMFSA_2:92
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A36, Th38;
verum end; suppose A39:
InsCode i = 5
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da,
db being
Int-Location such that A40:
i = Divide (
da,
db)
by A39, SCMFSA_2:58;
A41:
IncAddr (
i,
n)
= i
by A40, SCMFSA_4:13;
now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A40, SCMFSA_2:93
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A40, A41, SCMFSA_2:93
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A42, Th38;
verum end; suppose
InsCode i = 6
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )then consider loc being
Element of
NAT such that A46:
i = goto loc
by SCMFSA_2:59;
A47:
IncAddr (
i,
n)
= goto (loc + n)
by A46, SCMFSA_4:14;
IC (Exec (i,s1)) = loc
by A46, SCMFSA_2:95;
hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A47, SCMFSA_2:95;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A48, Th38;
verum end; suppose A55:
InsCode i = 9
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A56:
i = da := (
f,
db)
by A55, SCMFSA_2:62;
A57:
IncAddr (
i,
n)
= i
by A56, SCMFSA_4:17;
A58:
now let c be
Int-Location ;
(Exec (i,s1)) . b1 = (Exec ((IncAddr (i,n)),s2)) . b1per cases
( c = da or c <> da )
;
suppose A59:
c = da
;
(Exec (i,s1)) . b1 = (Exec ((IncAddr (i,n)),s2)) . b1then consider m being
Element of
NAT such that A60:
m = abs (s1 . db)
and A61:
(Exec ((da := (f,db)),s1)) . c = (s1 . f) /. m
by SCMFSA_2:98;
A62:
s1 . f = s2 . f
by A2, Th38;
consider m2 being
Element of
NAT such that A63:
m2 = abs (s2 . db)
and A64:
(Exec ((da := (f,db)),s2)) . c = (s2 . f) /. m2
by A59, SCMFSA_2:98;
m = m2
by A2, A60, A63, Th38;
hence
(Exec (i,s1)) . c = (Exec ((IncAddr (i,n)),s2)) . c
by A56, A61, A64, A62, SCMFSA_4:17;
verum end; end; end; now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A56, SCMFSA_2:98
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A56, A57, SCMFSA_2:98
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A58, Th38;
verum end; suppose A66:
InsCode i = 10
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider db,
da being
Int-Location ,
f being
FinSeq-Location such that A67:
i = (
f,
db)
:= da
by A66, SCMFSA_2:63;
A68:
IncAddr (
i,
n)
= i
by A67, SCMFSA_4:18;
A69:
now let g be
FinSeq-Location ;
(Exec (i,s1)) . b1 = (Exec ((IncAddr (i,n)),s2)) . b1per cases
( g = f or g <> f )
;
suppose A70:
g = f
;
(Exec (i,s1)) . b1 = (Exec ((IncAddr (i,n)),s2)) . b1A71:
(
s1 . da = s2 . da &
s1 . f = s2 . f )
by A2, Th38;
consider m2 being
Element of
NAT such that A72:
m2 = abs (s2 . db)
and A73:
(Exec (((f,db) := da),s2)) . f = (s2 . f) +* (
m2,
(s2 . da))
by SCMFSA_2:99;
consider m1 being
Element of
NAT such that A74:
m1 = abs (s1 . db)
and A75:
(Exec (((f,db) := da),s1)) . f = (s1 . f) +* (
m1,
(s1 . da))
by SCMFSA_2:99;
m1 = m2
by A2, A74, A72, Th38;
hence
(Exec (i,s1)) . g = (Exec ((IncAddr (i,n)),s2)) . g
by A67, A70, A75, A73, A71, SCMFSA_4:18;
verum end; end; end; now let c be
Int-Location ;
(Exec (i,s1)) . c = (Exec ((IncAddr (i,n)),s2)) . cthus (Exec (i,s1)) . c =
s1 . c
by A67, SCMFSA_2:99
.=
s2 . c
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . c
by A67, A68, SCMFSA_2:99
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A69, Th38;
verum end; suppose A77:
InsCode i = 11
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da being
Int-Location ,
f being
FinSeq-Location such that A78:
i = da :=len f
by A77, SCMFSA_2:64;
A79:
IncAddr (
i,
n)
= i
by A78, SCMFSA_4:19;
now let f be
FinSeq-Location ;
(Exec (i,s1)) . f = (Exec ((IncAddr (i,n)),s2)) . fthus (Exec (i,s1)) . f =
s1 . f
by A78, SCMFSA_2:100
.=
s2 . f
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . f
by A78, A79, SCMFSA_2:100
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A80, Th38;
verum end; suppose A83:
InsCode i = 12
;
( (IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2)) & DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2)) )hence
(IC (Exec (i,s1))) + n = IC (Exec ((IncAddr (i,n)),s2))
by A4;
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))consider da being
Int-Location ,
f being
FinSeq-Location such that A84:
i = f :=<0,...,0> da
by A83, SCMFSA_2:65;
A85:
IncAddr (
i,
n)
= i
by A84, SCMFSA_4:20;
A86:
now let g be
FinSeq-Location ;
(Exec (i,s1)) . b1 = (Exec ((IncAddr (i,n)),s2)) . b1per cases
( g = f or g <> f )
;
suppose A87:
g = f
;
(Exec (i,s1)) . b1 = (Exec ((IncAddr (i,n)),s2)) . b1
( ex
m1 being
Element of
NAT st
(
m1 = abs (s1 . da) &
(Exec ((f :=<0,...,0> da),s1)) . f = m1 |-> 0 ) & ex
m2 being
Element of
NAT st
(
m2 = abs (s2 . da) &
(Exec ((f :=<0,...,0> da),s2)) . f = m2 |-> 0 ) )
by SCMFSA_2:101;
hence
(Exec (i,s1)) . g = (Exec ((IncAddr (i,n)),s2)) . g
by A2, A84, A85, A87, Th38;
verum end; end; end; now let c be
Int-Location ;
(Exec (i,s1)) . c = (Exec ((IncAddr (i,n)),s2)) . cthus (Exec (i,s1)) . c =
s1 . c
by A84, SCMFSA_2:101
.=
s2 . c
by A2, Th38
.=
(Exec ((IncAddr (i,n)),s2)) . c
by A84, A85, SCMFSA_2:101
;
verum end; hence
DataPart (Exec (i,s1)) = DataPart (Exec ((IncAddr (i,n)),s2))
by A86, Th38;
verum end; end;