thus
SCM+FSA is homogeneous
SCM+FSA is with_explicit_jumps proof
let I,
J be
Instruction of
SCM+FSA;
COMPOS_1:def 12 ( not InsCode I = InsCode J or dom (I `2_3) = dom (J `2_3) )
assume A1:
InsCode I = InsCode J
;
dom (I `2_3) = dom (J `2_3)
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:93;
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:93;
suppose
ex
a,
b being
Int-Location st
I = a := b
;
dom (I `2_3) = dom (J `2_3)then consider a,
b being
Int-Location such that A3:
I = a := b
;
A4:
InsCode I = 1
by A3, SCMFSA_2:18;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A4, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; hence
dom (I `2_3) = dom (J `2_3)
;
verum end; suppose
ex
a,
b being
Int-Location st
I = AddTo (
a,
b)
;
dom (I `2_3) = dom (J `2_3)then consider a,
b being
Int-Location such that A6:
I = AddTo (
a,
b)
;
A7:
InsCode I = 2
by A6, SCMFSA_2:19;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A7, SCMFSA_2:18, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
a,
b being
Int-Location st
I = SubFrom (
a,
b)
;
dom (I `2_3) = dom (J `2_3)then consider a,
b being
Int-Location such that A9:
I = SubFrom (
a,
b)
;
A10:
InsCode I = 3
by A9, SCMFSA_2:20;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A10, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
a,
b being
Int-Location st
I = MultBy (
a,
b)
;
dom (I `2_3) = dom (J `2_3)then consider a,
b being
Int-Location such that A12:
I = MultBy (
a,
b)
;
A13:
InsCode I = 4
by A12, SCMFSA_2:21;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A13, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
a,
b being
Int-Location st
I = Divide (
a,
b)
;
dom (I `2_3) = dom (J `2_3)then consider a,
b being
Int-Location such that A15:
I = Divide (
a,
b)
;
A16:
InsCode I = 5
by A15, SCMFSA_2:22;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A16, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
i1 being
Element of
NAT st
I = goto i1
;
dom (I `2_3) = dom (J `2_3)then consider i1 being
Element of
NAT such that A18:
I = goto i1
;
A19:
InsCode I = 6
by A18, SCMFSA_2:23;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A19, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a =0_goto i1
;
dom (I `2_3) = dom (J `2_3)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:24;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A22, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
i1 being
Element of
NAT ex
a being
Int-Location st
I = a >0_goto i1
;
dom (I `2_3) = dom (J `2_3)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:25;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A25, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
I = b := (
f,
a)
;
dom (I `2_3) = dom (J `2_3)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:26;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A28, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:27, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
a,
b being
Int-Location ex
f being
FinSeq-Location st
I = (
f,
a)
:= b
;
dom (I `2_3) = dom (J `2_3)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:27;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A31, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:28, SCMFSA_2:29;
verum end; end; end; suppose
ex
a being
Int-Location ex
f being
FinSeq-Location st
I = a :=len f
;
dom (I `2_3) = dom (J `2_3)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:28;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A34, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:29;
verum end; end; end; suppose
ex
a being
Int-Location ex
f being
FinSeq-Location st
I = f :=<0,...,0> a
;
dom (I `2_3) = dom (J `2_3)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:29;
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:93;
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 (I `2_3) = dom (J `2_3)hence
dom (I `2_3) = dom (J `2_3)
by A1, A37, SCMFSA_2:18, SCMFSA_2:19, SCMFSA_2:20, SCMFSA_2:21, SCMFSA_2:22, SCMFSA_2:23, SCMFSA_2:24, SCMFSA_2:25, SCMFSA_2:26, SCMFSA_2:27, SCMFSA_2:28;
verum end; end; end; end;
end;
thus
SCM+FSA is with_explicit_jumps
verumproof
let I be
Instruction of
SCM+FSA;
AMISTD_2:def 2 I is with_explicit_jumps
thus
JUMP I c= rng (JumpPart I)
AMISTD_2:def 1,
XBOOLE_0:def 10 proj2 (I `2_3) c= JUMP Iproof
let f be
set ;
TARSKI:def 3 ( not f in JUMP I or f in rng (JumpPart I) )
assume A39:
f in JUMP I
;
f in rng (JumpPart 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:93;
end;
end;
let f be
set ;
TARSKI:def 3 ( not f in proj2 (I `2_3) or f in JUMP I )
assume
f in rng (JumpPart I)
;
f in JUMP I
then consider k being
set such that A52:
k in dom (JumpPart I)
and A53:
f = (JumpPart I) . k
by FUNCT_1:def 3;
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:93;
end;
end;