let I be set ; ( not I is Instruction of SCMPDS or I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )
assume
I is Instruction of SCMPDS
; ( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )
then reconsider I = I as Instruction of SCMPDS ;
per cases
( I in {[0,{},{}]} or I in { [14,{},<*k1*>] where k1 is Element of INT : verum } or I in { [1,{},<*d1*>] where d1 is Element of SCM-Data-Loc : verum } or I in { [I1,{},<*d2,k2*>] where I1 is Element of Segm 15, d2 is Element of SCM-Data-Loc , k2 is Element of INT : I1 in {2,3} } or I in { [I2,{},<*d3,k3,k4*>] where I2 is Element of Segm 15, d3 is Element of SCM-Data-Loc , k3, k4 is Element of INT : I2 in {4,5,6,7,8} } or I in { [I3,{},<*d4,d5,k5,k6*>] where I3 is Element of Segm 15, d4, d5 is Element of SCM-Data-Loc , k5, k6 is Element of INT : I3 in {9,10,11,12,13} } )
by Lm1;
suppose
I in {[0,{},{}]}
;
( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )then
I = [0,{},{}]
by TARSKI:def 1;
hence
(
I = [0,{},{}] or ex
k1 being
Integer st
I = goto k1 or ex
a being
Int_position st
I = return a or ex
a being
Int_position ex
k1 being
Integer st
I = saveIC (
a,
k1) or ex
a being
Int_position ex
k1 being
Integer st
I = a := k1 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<>0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<=0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
>=0_goto k2 or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = SubFrom (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = MultBy (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = Divide (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= (
b,
k2) )
;
verum end; suppose
I in { [14,{},<*k1*>] where k1 is Element of INT : verum }
;
( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )then consider k1 being
Element of
INT such that A1:
I = [14,{},<*k1*>]
;
I = goto k1
by A1;
hence
(
I = [0,{},{}] or ex
k1 being
Integer st
I = goto k1 or ex
a being
Int_position st
I = return a or ex
a being
Int_position ex
k1 being
Integer st
I = saveIC (
a,
k1) or ex
a being
Int_position ex
k1 being
Integer st
I = a := k1 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<>0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<=0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
>=0_goto k2 or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = SubFrom (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = MultBy (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = Divide (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= (
b,
k2) )
;
verum end; suppose
I in { [1,{},<*d1*>] where d1 is Element of SCM-Data-Loc : verum }
;
( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )then consider d1 being
Element of
SCM-Data-Loc such that A2:
I = [1,{},<*d1*>]
;
reconsider a =
d1 as
Int_position by AMI_2:def 16;
I = return a
by A2;
hence
(
I = [0,{},{}] or ex
k1 being
Integer st
I = goto k1 or ex
a being
Int_position st
I = return a or ex
a being
Int_position ex
k1 being
Integer st
I = saveIC (
a,
k1) or ex
a being
Int_position ex
k1 being
Integer st
I = a := k1 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<>0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<=0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
>=0_goto k2 or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = SubFrom (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = MultBy (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = Divide (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= (
b,
k2) )
;
verum end; suppose
I in { [I1,{},<*d2,k2*>] where I1 is Element of Segm 15, d2 is Element of SCM-Data-Loc , k2 is Element of INT : I1 in {2,3} }
;
( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )then consider I2 being
Element of
Segm 15,
d2 being
Element of
SCM-Data-Loc ,
k2 being
Element of
INT such that A3:
(
I = [I2,{},<*d2,k2*>] &
I2 in {2,3} )
;
reconsider a =
d2 as
Int_position by AMI_2:def 16;
(
I = saveIC (
a,
k2) or
I = a := k2 )
by A3, TARSKI:def 2;
hence
(
I = [0,{},{}] or ex
k1 being
Integer st
I = goto k1 or ex
a being
Int_position st
I = return a or ex
a being
Int_position ex
k1 being
Integer st
I = saveIC (
a,
k1) or ex
a being
Int_position ex
k1 being
Integer st
I = a := k1 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<>0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<=0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
>=0_goto k2 or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = SubFrom (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = MultBy (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = Divide (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= (
b,
k2) )
;
verum end; suppose
I in { [I2,{},<*d3,k3,k4*>] where I2 is Element of Segm 15, d3 is Element of SCM-Data-Loc , k3, k4 is Element of INT : I2 in {4,5,6,7,8} }
;
( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )then consider I3 being
Element of
Segm 15,
d3 being
Element of
SCM-Data-Loc ,
k1,
k2 being
Element of
INT such that A4:
(
I = [I3,{},<*d3,k1,k2*>] &
I3 in {4,5,6,7,8} )
;
reconsider a =
d3 as
Int_position by AMI_2:def 16;
(
I = (
a,
k1)
<>0_goto k2 or
I = (
a,
k1)
<=0_goto k2 or
I = (
a,
k1)
>=0_goto k2 or
I = (
a,
k1)
:= k2 or
I = AddTo (
a,
k1,
k2) )
by A4, ENUMSET1:def 3;
hence
(
I = [0,{},{}] or ex
k1 being
Integer st
I = goto k1 or ex
a being
Int_position st
I = return a or ex
a being
Int_position ex
k1 being
Integer st
I = saveIC (
a,
k1) or ex
a being
Int_position ex
k1 being
Integer st
I = a := k1 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<>0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<=0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
>=0_goto k2 or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = SubFrom (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = MultBy (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = Divide (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= (
b,
k2) )
;
verum end; suppose
I in { [I3,{},<*d4,d5,k5,k6*>] where I3 is Element of Segm 15, d4, d5 is Element of SCM-Data-Loc , k5, k6 is Element of INT : I3 in {9,10,11,12,13} }
;
( I = [0,{},{}] or ex k1 being Integer st I = goto k1 or ex a being Int_position st I = return a or ex a being Int_position ex k1 being Integer st I = saveIC (a,k1) or ex a being Int_position ex k1 being Integer st I = a := k1 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) := k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <>0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) <=0_goto k2 or ex a being Int_position ex k1, k2 being Integer st I = (a,k1) >=0_goto k2 or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = AddTo (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = SubFrom (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = MultBy (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = Divide (a,k1,b,k2) or ex a, b being Int_position ex k1, k2 being Integer st I = (a,k1) := (b,k2) )then consider I3 being
Element of
Segm 15,
d4,
d5 being
Element of
SCM-Data-Loc ,
k1,
k2 being
Element of
INT such that A5:
(
I = [I3,{},<*d4,d5,k1,k2*>] &
I3 in {9,10,11,12,13} )
;
reconsider a =
d4,
b =
d5 as
Int_position by AMI_2:def 16;
(
I = AddTo (
a,
k1,
b,
k2) or
I = SubFrom (
a,
k1,
b,
k2) or
I = MultBy (
a,
k1,
b,
k2) or
I = Divide (
a,
k1,
b,
k2) or
I = (
a,
k1)
:= (
b,
k2) )
by A5, ENUMSET1:def 3;
hence
(
I = [0,{},{}] or ex
k1 being
Integer st
I = goto k1 or ex
a being
Int_position st
I = return a or ex
a being
Int_position ex
k1 being
Integer st
I = saveIC (
a,
k1) or ex
a being
Int_position ex
k1 being
Integer st
I = a := k1 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<>0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
<=0_goto k2 or ex
a being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
>=0_goto k2 or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = AddTo (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = SubFrom (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = MultBy (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = Divide (
a,
k1,
b,
k2) or ex
a,
b being
Int_position ex
k1,
k2 being
Integer st
I = (
a,
k1)
:= (
b,
k2) )
;
verum end; end;