thus
SCM+FSA is homogeneous
( SCM+FSA is with_explicit_jumps & SCM+FSA is without_implicit_jumps )proof
let I,
J be
Instruction of
SCM+FSA ;
AMISTD_2:def 4 ( not InsCode I = InsCode J or dom (AddressPart I) = dom (AddressPart J) )
assume A1:
InsCode I = InsCode J
;
dom (AddressPart I) = dom (AddressPart J)
A2:
(
J = [0 ,{} ] or ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
by SCMFSA_2:120;
per cases
( I = [0 ,{} ] or ex a, b being Int-Location st I = a := b or ex a, b being Int-Location st I = AddTo a,b or ex a, b being Int-Location st I = SubFrom a,b or ex a, b being Int-Location st I = MultBy a,b or ex a, b being Int-Location st I = Divide a,b or ex i1 being Element of NAT st I = goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st I = b := f,a or ex a, b being Int-Location ex f being FinSeq-Location st I = f,a := b or ex a being Int-Location ex f being FinSeq-Location st I = a :=len f or ex a being Int-Location ex f being FinSeq-Location st I = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
ex
a,
b being
Int-Location st
I = a := b
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location such that A3:
I = a := b
;
A4:
InsCode I = 1
by A3, SCMFSA_2:42;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A4, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a,
b being
Int-Location st
I = AddTo a,
b
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location such that A6:
I = AddTo a,
b
;
A7:
InsCode I = 2
by A6, SCMFSA_2:43;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A7, SCMFSA_2:42, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a,
b being
Int-Location st
I = SubFrom a,
b
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location such that A9:
I = SubFrom a,
b
;
A10:
InsCode I = 3
by A9, SCMFSA_2:44;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A10, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a,
b being
Int-Location st
I = MultBy a,
b
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location such that A12:
I = MultBy a,
b
;
A13:
InsCode I = 4
by A12, SCMFSA_2:45;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A13, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a,
b being
Int-Location st
I = Divide a,
b
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location such that A15:
I = Divide a,
b
;
A16:
InsCode I = 5
by A15, SCMFSA_2:46;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location st J = Divide a,b or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A16, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
i1 being
Element of
NAT st
I = goto i1
;
dom (AddressPart I) = dom (AddressPart J)then consider i1 being
Element of
NAT such that A18:
I = goto i1
;
A19:
InsCode I = 6
by A18, SCMFSA_2:47;
now per cases
( J = [0 ,{} ] or ex i2 being Element of NAT st J = goto i2 or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A19, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a =0_goto i1
;
dom (AddressPart I) = dom (AddressPart J)then consider a being
Int-Location ,
i1 being
Element of
NAT such that A21:
I = a =0_goto i1
;
A22:
InsCode I = 7
by A21, SCMFSA_2:48;
now per cases
( J = [0 ,{} ] or ex i2 being Element of NAT ex d1 being Int-Location st J = d1 =0_goto i2 or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A22, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a >0_goto i1
;
dom (AddressPart I) = dom (AddressPart J)then consider a being
Int-Location ,
i1 being
Element of
NAT such that A24:
I = a >0_goto i1
;
A25:
InsCode I = 8
by A24, SCMFSA_2:49;
now per cases
( J = [0 ,{} ] or ex i2 being Element of NAT ex d1 being Int-Location st J = d1 >0_goto i2 or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex b, a being Int-Location ex f being FinSeq-Location st J = a := f,b or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
b,
a being
Int-Location ex
f being
FinSeq-Location st
J = a := f,
b or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A25, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
I = b := f,
a
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location ,
f being
FinSeq-Location such that A27:
I = b := f,
a
;
A28:
InsCode I = 9
by A27, SCMFSA_2:50;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location ex f being FinSeq-Location st J = b := f,a or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A28, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:51, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
I = f,
a := b
;
dom (AddressPart I) = dom (AddressPart J)then consider a,
b being
Int-Location ,
f being
FinSeq-Location such that A30:
I = f,
a := b
;
A31:
InsCode I = 10
by A30, SCMFSA_2:51;
now per cases
( J = [0 ,{} ] or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st J = b := f,a or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = b := f,
a or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A31, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:52, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a being
Int-Location ex
f being
FinSeq-Location st
I = a :=len f
;
dom (AddressPart I) = dom (AddressPart J)then consider a being
Int-Location ,
f being
FinSeq-Location such that A33:
I = a :=len f
;
A34:
InsCode I = 11
by A33, SCMFSA_2:52;
now per cases
( J = [0 ,{} ] or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st J = b := f,a or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = b := f,
a or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = f :=<0,...,0> a )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A34, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:53;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; suppose
ex
a being
Int-Location ex
f being
FinSeq-Location st
I = f :=<0,...,0> a
;
dom (AddressPart I) = dom (AddressPart J)then consider a being
Int-Location ,
f being
FinSeq-Location such that A36:
I = f :=<0,...,0> a
;
A37:
InsCode I = 12
by A36, SCMFSA_2:53;
now per cases
( J = [0 ,{} ] or ex a being Int-Location ex f being FinSeq-Location st J = f :=<0,...,0> a or ex a, b being Int-Location st J = a := b or ex a, b being Int-Location st J = AddTo a,b or ex a, b being Int-Location st J = SubFrom a,b or ex a, b being Int-Location st J = MultBy a,b or ex a, b being Int-Location st J = Divide a,b or ex i1 being Element of NAT st J = goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st J = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st J = b := f,a or ex a, b being Int-Location ex f being FinSeq-Location st J = f,a := b or ex a being Int-Location ex f being FinSeq-Location st J = a :=len f )
by SCMFSA_2:120;
suppose
( ex
a,
b being
Int-Location st
J = a := b or ex
a,
b being
Int-Location st
J = AddTo a,
b or ex
a,
b being
Int-Location st
J = SubFrom a,
b or ex
a,
b being
Int-Location st
J = MultBy a,
b or ex
a,
b being
Int-Location st
J = Divide a,
b or ex
i1 being
Element of
NAT st
J = goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a =0_goto i1 or ex
i1 being
Element of
NAT ex
a being
Int-Location st
J = a >0_goto i1 or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = b := f,
a or ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
J = f,
a := b or ex
a being
Int-Location ex
f being
FinSeq-Location st
J = a :=len f )
;
dom (AddressPart I) = dom (AddressPart J)hence
dom (AddressPart I) = dom (AddressPart J)
by A1, A37, SCMFSA_2:42, SCMFSA_2:43, SCMFSA_2:44, SCMFSA_2:45, SCMFSA_2:46, SCMFSA_2:47, SCMFSA_2:48, SCMFSA_2:49, SCMFSA_2:50, SCMFSA_2:51, SCMFSA_2:52;
verum end; end; end; hence
dom (AddressPart I) = dom (AddressPart J)
;
verum end; end;
end;
thus
SCM+FSA is with_explicit_jumps
SCM+FSA is without_implicit_jumps proof
let I be
Instruction of
SCM+FSA ;
AMISTD_2:def 8 I is with_explicit_jumps let f be
set ;
AMISTD_2:def 6 ( not f in JUMP I or ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = K53() ) )
assume A39:
f in JUMP I
;
ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = K53() )
per cases
( I = [0 ,{} ] or ex a, b being Int-Location st I = a := b or ex a, b being Int-Location st I = AddTo a,b or ex a, b being Int-Location st I = SubFrom a,b or ex a, b being Int-Location st I = MultBy a,b or ex a, b being Int-Location st I = Divide a,b or ex i1 being Element of NAT st I = goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st I = b := f,a or ex a, b being Int-Location ex f being FinSeq-Location st I = f,a := b or ex a being Int-Location ex f being FinSeq-Location st I = a :=len f or ex a being Int-Location ex f being FinSeq-Location st I = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose A43:
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a =0_goto i1
;
ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = K53() )take
1
;
( 1 in dom (AddressPart I) & f = (AddressPart I) . 1 & (product" (AddressParts (InsCode I))) . 1 = K53() )consider a being
Int-Location ,
i1 being
Element of
NAT such that A44:
I = a =0_goto i1
by A43;
A45:
AddressPart (a =0_goto i1) = <*i1,a*>
by Th24;
dom <*i1,a*> = Seg 2
by FINSEQ_3:29;
hence
1
in dom (AddressPart I)
by A44, A45, FINSEQ_1:4, TARSKI:def 2;
( f = (AddressPart I) . 1 & (product" (AddressParts (InsCode I))) . 1 = K53() )
JUMP (a =0_goto i1) = {i1}
by Th77;
then
f = i1
by A39, A44, TARSKI:def 1;
hence
(
f = (AddressPart I) . 1 &
(product" (AddressParts (InsCode I))) . 1
= NAT )
by A44, A45, Th54, FINSEQ_1:61;
verum end; suppose A46:
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a >0_goto i1
;
ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = K53() )take
1
;
( 1 in dom (AddressPart I) & f = (AddressPart I) . 1 & (product" (AddressParts (InsCode I))) . 1 = K53() )consider a being
Int-Location ,
i1 being
Element of
NAT such that A47:
I = a >0_goto i1
by A46;
A48:
AddressPart (a >0_goto i1) = <*i1,a*>
by Th25;
dom <*i1,a*> = Seg 2
by FINSEQ_3:29;
hence
1
in dom (AddressPart I)
by A47, A48, FINSEQ_1:4, TARSKI:def 2;
( f = (AddressPart I) . 1 & (product" (AddressParts (InsCode I))) . 1 = K53() )
JUMP (a >0_goto i1) = {i1}
by Th79;
then
f = i1
by A39, A47, TARSKI:def 1;
hence
(
f = (AddressPart I) . 1 &
(product" (AddressParts (InsCode I))) . 1
= NAT )
by A47, A48, Th56, FINSEQ_1:61;
verum end; end;
end;
let I be Instruction of SCM+FSA ; AMISTD_2:def 9 I is without_implicit_jumps
let f be set ; AMISTD_2:def 7 ( for b1 being set holds
( not b1 in dom (AddressPart I) or not f = (AddressPart I) . b1 or not (product" (AddressParts (InsCode I))) . b1 = K53() ) or f in JUMP I )
given k being set such that A49:
k in dom (AddressPart I)
and
A50:
f = (AddressPart I) . k
and
A51:
(product" (AddressParts (InsCode I))) . k = NAT
; f in JUMP I
per cases
( I = [0 ,{} ] or ex a, b being Int-Location st I = a := b or ex a, b being Int-Location st I = AddTo a,b or ex a, b being Int-Location st I = SubFrom a,b or ex a, b being Int-Location st I = MultBy a,b or ex a, b being Int-Location st I = Divide a,b or ex i1 being Element of NAT st I = goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st I = b := f,a or ex a, b being Int-Location ex f being FinSeq-Location st I = f,a := b or ex a being Int-Location ex f being FinSeq-Location st I = a :=len f or ex a being Int-Location ex f being FinSeq-Location st I = f :=<0,...,0> a )
by SCMFSA_2:120;
suppose
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a =0_goto i1
;
f in JUMP Ithen consider a being
Int-Location ,
i1 being
Element of
NAT such that A60:
I = a =0_goto i1
;
A61:
AddressPart I = <*i1,a*>
by A60, Th24;
then
(
k = 1 or
k = 2 )
by A49, Lm2;
then A62:
f = i1
by A50, A51, A60, A61, Th5, Th55, FINSEQ_1:61;
JUMP I = {i1}
by A60, Th77;
hence
f in JUMP I
by A62, TARSKI:def 1;
verum end; suppose
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a >0_goto i1
;
f in JUMP Ithen consider a being
Int-Location ,
i1 being
Element of
NAT such that A63:
I = a >0_goto i1
;
A64:
AddressPart I = <*i1,a*>
by A63, Th25;
then
(
k = 1 or
k = 2 )
by A49, Lm2;
then A65:
f = i1
by A50, A51, A63, A64, Th5, Th57, FINSEQ_1:61;
JUMP I = {i1}
by A63, Th79;
hence
f in JUMP I
by A65, TARSKI:def 1;
verum end; suppose
ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
I = b := f,
a
;
f in JUMP Ithen consider a,
b being
Int-Location ,
f being
FinSeq-Location such that A66:
I = b := f,
a
;
k in dom <*b,f,a*>
by A49, A66, MCART_1:def 2;
then
(
k = 1 or
k = 2 or
k = 3 )
by Lm3;
hence
f in JUMP I
by A51, A66, Th5, Th6, Th58, Th59, Th60;
verum end; suppose
ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
I = f,
a := b
;
f in JUMP Ithen consider a,
b being
Int-Location ,
f being
FinSeq-Location such that A67:
I = f,
a := b
;
k in dom <*b,f,a*>
by A49, A67, MCART_1:def 2;
then
(
k = 1 or
k = 2 or
k = 3 )
by Lm3;
hence
f in JUMP I
by A51, A67, Th5, Th6, Th61, Th62, Th63;
verum end; suppose
ex
a being
Int-Location ex
f being
FinSeq-Location st
I = f :=<0,...,0> a
;
f in JUMP Ithen consider a being
Int-Location ,
f being
FinSeq-Location such that A69:
I = f :=<0,...,0> a
;
k in dom <*a,f*>
by A49, A69, MCART_1:def 2;
then
(
k = 1 or
k = 2 )
by Lm2;
hence
f in JUMP I
by A51, A69, Th5, Th6, Th66, Th67;
verum end; end;