begin
begin
definition
 
func  SCMPDS-Instr  ->    set  equals 
(((({[0,{},{}]} \/  {  [14,{},<*l*>] where l is    Element of  INT  : verum  }  ) \/  {  [1,{},<*sp*>] where sp is    Element of  SCM-Data-Loc  : verum  }  ) \/  {  [I,{},<*v,c*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c is    Element of  INT  : I in {2,3}  }  ) \/  {  [I,{},<*v,c1,c2*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {4,5,6,7,8}  }  ) \/  {  [I,{},<*v1,v2,c1,c2*>] where I is    Element of  Segm 15, v1, v2 is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {9,10,11,12,13}  }  ;
 
coherence 
(((({[0,{},{}]} \/  {  [14,{},<*l*>] where l is    Element of  INT  : verum  }  ) \/  {  [1,{},<*sp*>] where sp is    Element of  SCM-Data-Loc  : verum  }  ) \/  {  [I,{},<*v,c*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c is    Element of  INT  : I in {2,3}  }  ) \/  {  [I,{},<*v,c1,c2*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {4,5,6,7,8}  }  ) \/  {  [I,{},<*v1,v2,c1,c2*>] where I is    Element of  Segm 15, v1, v2 is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {9,10,11,12,13}  }   is    set 
 ;
 
end;
 
:: 
deftheorem    defines 
SCMPDS-Instr SCMPDS_I:def 1 : 
 SCMPDS-Instr  = (((({[0,{},{}]} \/  {  [14,{},<*l*>] where l is    Element of  INT  : verum  }  ) \/  {  [1,{},<*sp*>] where sp is    Element of  SCM-Data-Loc  : verum  }  ) \/  {  [I,{},<*v,c*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c is    Element of  INT  : I in {2,3}  }  ) \/  {  [I,{},<*v,c1,c2*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {4,5,6,7,8}  }  ) \/  {  [I,{},<*v1,v2,c1,c2*>] where I is    Element of  Segm 15, v1, v2 is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {9,10,11,12,13}  }  ;
Lm1: 
[0,{},{}] in  SCMPDS-Instr 
 
definition
let x be    
Element of  
SCMPDS-Instr ;
given m1 being    
Element of  
SCM-Data-Loc , 
k1, 
k2 being   
Integer, 
I being    
Element of  
Segm 15
 such that A1: 
x = [I,{},<*m1,k1,k2*>]
 ;
 
existence 
 ex b1 being    Element of  SCM-Data-Loc  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 1 )
 
uniqueness 
 for b1, b2 being    Element of  SCM-Data-Loc   st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 1 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 1 ) holds 
b1 = b2
 ;
 
existence 
 ex b1 being   Integer ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 2 )
 
uniqueness 
 for b1, b2 being   Integer  st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 2 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 2 ) holds 
b1 = b2
 ;
 
existence 
 ex b1 being   Integer ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 3 )
 
uniqueness 
 for b1, b2 being   Integer  st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 3 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 3 ) holds 
b1 = b2
 ;
 
end;
 
definition
let x be    
Element of  
SCMPDS-Instr ;
given m1, 
m2 being    
Element of  
SCM-Data-Loc , 
k1, 
k2 being   
Integer, 
I being    
Element of  
Segm 15
 such that A1: 
x = [I,{},<*m1,m2,k1,k2*>]
 ;
 
existence 
 ex b1 being    Element of  SCM-Data-Loc  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 1 )
 
uniqueness 
 for b1, b2 being    Element of  SCM-Data-Loc   st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 1 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 1 ) holds 
b1 = b2
 ;
 
existence 
 ex b1 being    Element of  SCM-Data-Loc  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 2 )
 
uniqueness 
 for b1, b2 being    Element of  SCM-Data-Loc   st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 2 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 2 ) holds 
b1 = b2
 ;
 
existence 
 ex b1 being   Integer ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 3 )
 
uniqueness 
 for b1, b2 being   Integer  st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 3 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 3 ) holds 
b1 = b2
 ;
 
existence 
 ex b1 being   Integer ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 4 )
 
uniqueness 
 for b1, b2 being   Integer  st  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b1 = f /. 4 ) &  ex f being    FinSequence of SCM-Data-Loc \/ INT st 
( f = x `3_3  & b2 = f /. 4 ) holds 
b1 = b2
 ;
 
end;
 
theorem Th8: 
 for 
x being    
Element of  
SCMPDS-Instr   holds 
( ( 
x in {[0,{},{}]} &  
InsCode x =  0  ) or ( 
x in  {  [14,{},<*l*>] where l is    Element of  INT  : verum  }   &  
InsCode x = 14 ) or ( 
x in  {  [1,{},<*sp*>] where sp is    Element of  SCM-Data-Loc  : verum  }   &  
InsCode x = 1 ) or ( 
x in  {  [I,{},<*v,c*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c is    Element of  INT  : I in {2,3}  }   & (  
InsCode x = 2 or  
InsCode x = 3 ) ) or ( 
x in  {  [I,{},<*v,c1,c2*>] where I is    Element of  Segm 15, v is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {4,5,6,7,8}  }   & (  
InsCode x = 4 or  
InsCode x = 5 or  
InsCode x = 6 or  
InsCode x = 7 or  
InsCode x = 8 ) ) or ( 
x in  {  [I,{},<*v1,v2,c1,c2*>] where I is    Element of  Segm 15, v1, v2 is    Element of  SCM-Data-Loc , c1, c2 is    Element of  INT  : I in {9,10,11,12,13}  }   & (  
InsCode x = 9 or  
InsCode x = 10 or  
InsCode x = 11 or  
InsCode x = 12 or  
InsCode x = 13 ) ) )
 
begin
Lm2: 
 for l being    Element of  SCMPDS-Instr  holds   InsCode l <= 14
 
Lm3: 
 for i being    Element of  SCMPDS-Instr   st  InsCode i =  0  holds 
 JumpPart i =  {} 
 
Lm4: 
 for i being    Element of  SCMPDS-Instr   st  InsCode i = 14 holds 
 JumpPart i =  {} 
 
Lm5: 
 for i being    Element of  SCMPDS-Instr   st  InsCode i = 1 holds 
 JumpPart i =  {} 
 
Lm6: 
 for i being    Element of  SCMPDS-Instr   st (  InsCode i = 2 or  InsCode i = 3 ) holds 
 JumpPart i =  {} 
 
Lm7: 
 for i being    Element of  SCMPDS-Instr   st (  InsCode i = 4 or  InsCode i = 5 or  InsCode i = 6 or  InsCode i = 7 or  InsCode i = 8 ) holds 
 JumpPart i =  {} 
 
Lm8: 
 for i being    Element of  SCMPDS-Instr   st (  InsCode i = 9 or  InsCode i = 10 or  InsCode i = 11 or  InsCode i = 12 or  InsCode i = 13 ) holds 
 JumpPart i =  {} 
 
 
:: [1,return sp<-sp+0,count<-(sp)+2]
:: [2,a:=c(constant)]
:: [3,saveIC (a,k)]
:: [4,if(a,k)<>0 goto L ]
:: [5,if(a,k)<=0 goto L ]
:: [6,if(a,k)>=0 goto L ]
:: [7,(a,k):=c(constant) ]
:: [8,(a,k1)+k2]
:: [9, (a1,k1)+(a2,k2)]
:: [10,(a1,k1)-(a2,k2)]
:: [11,(a1,k1)*(a2,k2)]
:: [12,(a1,k1)/(a2,k2)]
:: [13,(a1,k1):=(a2,k2)]