:: SCMFSA_1  semantic presentation
:: deftheorem Def1   defines SCM+FSA-Data-Loc SCMFSA_1:def 1 : 
:: deftheorem Def2   defines SCM+FSA-Data*-Loc SCMFSA_1:def 2 : 
:: deftheorem Def3   defines SCM+FSA-Instr-Loc SCMFSA_1:def 3 : 
definition
func  SCM+FSA-Instr  ->   Subset of 
[:(Segm 13),(((union {INT ,(INT  * )}) \/ INT ) * ):] equals :: SCMFSA_1:def 4
(SCM-Instr  \/ { [b1,<*b2,b4,b3*>] where B is    Element of  Segm 13, B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data*-Loc  : b1 in {9,10} } ) \/ { [b1,<*b2,b3*>] where B is    Element of  Segm 13, B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data*-Loc  : b1 in {11,12} } ;
coherence 
(SCM-Instr  \/ { [b1,<*b2,b4,b3*>] where B is    Element of  Segm 13, B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data*-Loc  : b1 in {9,10} } ) \/ { [b1,<*b2,b3*>] where B is    Element of  Segm 13, B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data*-Loc  : b1 in {11,12} }  is   Subset of [:(Segm 13),(((union {INT ,(INT  * )}) \/ INT ) * ):]
 
 
end;
 
:: deftheorem Def4   defines SCM+FSA-Instr SCMFSA_1:def 4 : 
 SCM+FSA-Instr  = (SCM-Instr  \/ { [b1,<*b2,b4,b3*>] where B is    Element of  Segm 13, B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data*-Loc  : b1 in {9,10} } ) \/ { [b1,<*b2,b3*>] where B is    Element of  Segm 13, B is    Element of  SCM+FSA-Data-Loc , B is    Element of  SCM+FSA-Data*-Loc  : b1 in {11,12} } ;
 
theorem Th1: :: SCMFSA_1:1
canceled; 
theorem Th2: :: SCMFSA_1:2
:: deftheorem Def5   defines InsCode SCMFSA_1:def 5 : 
theorem Th3: :: SCMFSA_1:3
theorem Th4: :: SCMFSA_1:4
:: deftheorem Def6   defines SCM+FSA-OK SCMFSA_1:def 6 : 
Lemma3: 
 dom ((SCM-Instr  .--> SCM+FSA-Instr ) * (SCM-OK  | SCM-Instr-Loc )) c=  SCM-Instr-Loc 
 
Lemma4: 
 rng (SCM-OK  | SCM-Instr-Loc ) c= {SCM-Instr }
 
Lemma5: 
 SCM-Instr-Loc  c=  dom ((SCM-Instr  .--> SCM+FSA-Instr ) * (SCM-OK  | SCM-Instr-Loc ))
 
theorem Th5: :: SCMFSA_1:5
canceled; 
theorem Th6: :: SCMFSA_1:6
theorem Th7: :: SCMFSA_1:7
theorem Th8: :: SCMFSA_1:8
theorem Th9: :: SCMFSA_1:9
theorem Th10: :: SCMFSA_1:10
theorem Th11: :: SCMFSA_1:11
theorem Th12: :: SCMFSA_1:12
theorem Th13: :: SCMFSA_1:13
theorem Th14: :: SCMFSA_1:14
theorem Th15: :: SCMFSA_1:15
theorem Th16: :: SCMFSA_1:16
theorem Th17: :: SCMFSA_1:17
theorem Th18: :: SCMFSA_1:18
theorem Th19: :: SCMFSA_1:19
:: deftheorem Def7   defines SCM+FSA-Chg SCMFSA_1:def 7 : 
:: deftheorem Def8   defines SCM+FSA-Chg SCMFSA_1:def 8 : 
:: deftheorem Def9   defines SCM+FSA-Chg SCMFSA_1:def 9 : 
definition
let c1 be    
Element of  
SCM+FSA-Instr ;
given c2 being    
Element of  
SCM+FSA-Data-Loc , 
c3 being    
Element of  
SCM+FSA-Data*-Loc , 
c4 being    
Element of  
SCM+FSA-Data-Loc , 
c5 being    
Element of  
Segm 13
 such that E14: 
c1 = [c5,<*c2,c3,c4*>]
 ;
func c1 int_addr1  ->    Element of  
SCM+FSA-Data-Loc  means :: SCMFSA_1:def 10
ex 
b1 being   
Element of  
SCM+FSA-Data-Loc ex 
b2 being   
Element of  
SCM+FSA-Data*-Loc ex 
b3 being   
Element of  
SCM+FSA-Data-Loc  st 
( 
<*b1,b2,b3*> = a1 `2  & 
a2 = b1 );
existence 
ex b1, b2 being   Element of  SCM+FSA-Data-Loc ex b3 being   Element of  SCM+FSA-Data*-Loc ex b4 being   Element of  SCM+FSA-Data-Loc  st 
( <*b2,b3,b4*> = c1 `2  & b1 = b2 )
 
uniqueness 
for b1, b2 being   Element of  SCM+FSA-Data-Loc   st ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc ex b5 being   Element of  SCM+FSA-Data-Loc  st 
( <*b3,b4,b5*> = c1 `2  & b1 = b3 ) & ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc ex b5 being   Element of  SCM+FSA-Data-Loc  st 
( <*b3,b4,b5*> = c1 `2  & b2 = b3 ) holds 
b1 = b2
 
func c1 int_addr2  ->    Element of  
SCM+FSA-Data-Loc  means :: SCMFSA_1:def 11
ex 
b1 being   
Element of  
SCM+FSA-Data-Loc ex 
b2 being   
Element of  
SCM+FSA-Data*-Loc ex 
b3 being   
Element of  
SCM+FSA-Data-Loc  st 
( 
<*b1,b2,b3*> = a1 `2  & 
a2 = b3 );
existence 
ex b1, b2 being   Element of  SCM+FSA-Data-Loc ex b3 being   Element of  SCM+FSA-Data*-Loc ex b4 being   Element of  SCM+FSA-Data-Loc  st 
( <*b2,b3,b4*> = c1 `2  & b1 = b4 )
 
correctness 
uniqueness 
for b1, b2 being   Element of  SCM+FSA-Data-Loc   st ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc ex b5 being   Element of  SCM+FSA-Data-Loc  st 
( <*b3,b4,b5*> = c1 `2  & b1 = b5 ) & ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc ex b5 being   Element of  SCM+FSA-Data-Loc  st 
( <*b3,b4,b5*> = c1 `2  & b2 = b5 ) holds 
b1 = b2;
func c1 coll_addr1  ->    Element of  
SCM+FSA-Data*-Loc  means :: SCMFSA_1:def 12
ex 
b1 being   
Element of  
SCM+FSA-Data-Loc ex 
b2 being   
Element of  
SCM+FSA-Data*-Loc ex 
b3 being   
Element of  
SCM+FSA-Data-Loc  st 
( 
<*b1,b2,b3*> = a1 `2  & 
a2 = b2 );
existence 
ex b1 being   Element of  SCM+FSA-Data*-Loc ex b2 being   Element of  SCM+FSA-Data-Loc ex b3 being   Element of  SCM+FSA-Data*-Loc ex b4 being   Element of  SCM+FSA-Data-Loc  st 
( <*b2,b3,b4*> = c1 `2  & b1 = b3 )
 
correctness 
uniqueness 
for b1, b2 being   Element of  SCM+FSA-Data*-Loc   st ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc ex b5 being   Element of  SCM+FSA-Data-Loc  st 
( <*b3,b4,b5*> = c1 `2  & b1 = b4 ) & ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc ex b5 being   Element of  SCM+FSA-Data-Loc  st 
( <*b3,b4,b5*> = c1 `2  & b2 = b4 ) holds 
b1 = b2;
 
end;
 
:: deftheorem Def10   defines int_addr1 SCMFSA_1:def 10 : 
:: deftheorem Def11   defines int_addr2 SCMFSA_1:def 11 : 
:: deftheorem Def12   defines coll_addr1 SCMFSA_1:def 12 : 
definition
let c1 be    
Element of  
SCM+FSA-Instr ;
given c2 being    
Element of  
SCM+FSA-Data-Loc , 
c3 being    
Element of  
SCM+FSA-Data*-Loc , 
c4 being    
Element of  
Segm 13
 such that E14: 
c1 = [c4,<*c2,c3*>]
 ;
func c1 int_addr3  ->    Element of  
SCM+FSA-Data-Loc  means :: SCMFSA_1:def 13
ex 
b1 being   
Element of  
SCM+FSA-Data-Loc ex 
b2 being   
Element of  
SCM+FSA-Data*-Loc  st 
( 
<*b1,b2*> = a1 `2  & 
a2 = b1 );
existence 
ex b1, b2 being   Element of  SCM+FSA-Data-Loc ex b3 being   Element of  SCM+FSA-Data*-Loc  st 
( <*b2,b3*> = c1 `2  & b1 = b2 )
 
uniqueness 
for b1, b2 being   Element of  SCM+FSA-Data-Loc   st ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc  st 
( <*b3,b4*> = c1 `2  & b1 = b3 ) & ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc  st 
( <*b3,b4*> = c1 `2  & b2 = b3 ) holds 
b1 = b2
 
func c1 coll_addr2  ->    Element of  
SCM+FSA-Data*-Loc  means :: SCMFSA_1:def 14
ex 
b1 being   
Element of  
SCM+FSA-Data-Loc ex 
b2 being   
Element of  
SCM+FSA-Data*-Loc  st 
( 
<*b1,b2*> = a1 `2  & 
a2 = b2 );
existence 
ex b1 being   Element of  SCM+FSA-Data*-Loc ex b2 being   Element of  SCM+FSA-Data-Loc ex b3 being   Element of  SCM+FSA-Data*-Loc  st 
( <*b2,b3*> = c1 `2  & b1 = b3 )
 
correctness 
uniqueness 
for b1, b2 being   Element of  SCM+FSA-Data*-Loc   st ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc  st 
( <*b3,b4*> = c1 `2  & b1 = b4 ) & ex b3 being   Element of  SCM+FSA-Data-Loc ex b4 being   Element of  SCM+FSA-Data*-Loc  st 
( <*b3,b4*> = c1 `2  & b2 = b4 ) holds 
b1 = b2;
 
end;
 
:: deftheorem Def13   defines int_addr3 SCMFSA_1:def 13 : 
:: deftheorem Def14   defines coll_addr2 SCMFSA_1:def 14 : 
:: deftheorem Def15   defines Next SCMFSA_1:def 15 : 
:: deftheorem Def16   defines IC SCMFSA_1:def 16 : 
definition
let c1 be    
Element of  
SCM+FSA-Instr ;
let c2 be   
SCM+FSA-State;
func  SCM+FSA-Exec-Res c1,
c2 ->   SCM+FSA-State means :: SCMFSA_1:def 17
ex 
b1 being   
Element of  
SCM-Instr ex 
b2 being  
SCM-State st 
( 
a1 = b1 & 
b2 = (a2 | NAT ) +* (SCM-Instr-Loc  --> b1) & 
a3 = (a2 +* (SCM-Exec-Res b1,b2)) +* (a2 | SCM+FSA-Instr-Loc ) )
 if  InsCode a1 <= 8
ex 
b1 being  
Integerex 
b2 being  
Nat st 
( 
b2 =  abs (a2 . (a1 int_addr2 )) & 
b1 = (a2 . (a1 coll_addr1 )) /. b2 & 
a3 =  SCM+FSA-Chg (SCM+FSA-Chg a2,(a1 int_addr1 ),b1),
(Next (IC a2)) )
 if  InsCode a1 = 9
ex 
b1 being   
FinSequence of  
INT ex 
b2 being  
Nat st 
( 
b2 =  abs (a2 . (a1 int_addr2 )) & 
b1 = (a2 . (a1 coll_addr1 )) +* b2,
(a2 . (a1 int_addr1 )) & 
a3 =  SCM+FSA-Chg (SCM+FSA-Chg a2,(a1 coll_addr1 ),b1),
(Next (IC a2)) )
 if  InsCode a1 = 10
a3 =  SCM+FSA-Chg (SCM+FSA-Chg a2,(a1 int_addr3 ),(len (a2 . (a1 coll_addr2 )))),
(Next (IC a2)) if  InsCode a1 = 11
ex 
b1 being   
FinSequence of  
INT ex 
b2 being  
Nat st 
( 
b2 =  abs (a2 . (a1 int_addr3 )) & 
b1 = b2 |-> 0 & 
a3 =  SCM+FSA-Chg (SCM+FSA-Chg a2,(a1 coll_addr2 ),b1),
(Next (IC a2)) )
 if  InsCode a1 = 12
 otherwise a3 = a2;
existence 
( (  InsCode c1 <= 8 implies ex b1 being  SCM+FSA-Stateex b2 being   Element of  SCM-Instr ex b3 being  SCM-State st 
( c1 = b2 & b3 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b2) & b1 = (c2 +* (SCM-Exec-Res b2,b3)) +* (c2 | SCM+FSA-Instr-Loc ) ) ) & (  InsCode c1 = 9 implies ex b1 being  SCM+FSA-Stateex b2 being  Integerex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) /. b3 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b2),(Next (IC c2)) ) ) & (  InsCode c1 = 10 implies ex b1 being  SCM+FSA-Stateex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) +* b3,(c2 . (c1 int_addr1 )) & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b2),(Next (IC c2)) ) ) & (  InsCode c1 = 11 implies ex b1 being  SCM+FSA-State st b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) ) & (  InsCode c1 = 12 implies ex b1 being  SCM+FSA-Stateex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr3 )) & b2 = b3 |-> 0 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b2),(Next (IC c2)) ) ) & ( not  InsCode c1 <= 8 & not  InsCode c1 = 9 & not  InsCode c1 = 10 & not  InsCode c1 = 11 & not  InsCode c1 = 12 implies ex b1 being  SCM+FSA-State st b1 = c2 ) )
 
uniqueness 
for b1, b2 being  SCM+FSA-State holds 
 ( (  InsCode c1 <= 8 & ex b3 being   Element of  SCM-Instr ex b4 being  SCM-State st 
( c1 = b3 & b4 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b3) & b1 = (c2 +* (SCM-Exec-Res b3,b4)) +* (c2 | SCM+FSA-Instr-Loc ) ) & ex b3 being   Element of  SCM-Instr ex b4 being  SCM-State st 
( c1 = b3 & b4 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b3) & b2 = (c2 +* (SCM-Exec-Res b3,b4)) +* (c2 | SCM+FSA-Instr-Loc ) ) implies b1 = b2 ) & (  InsCode c1 = 9 & ex b3 being  Integerex b4 being  Nat st 
( b4 =  abs (c2 . (c1 int_addr2 )) & b3 = (c2 . (c1 coll_addr1 )) /. b4 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b3),(Next (IC c2)) ) & ex b3 being  Integerex b4 being  Nat st 
( b4 =  abs (c2 . (c1 int_addr2 )) & b3 = (c2 . (c1 coll_addr1 )) /. b4 & b2 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b3),(Next (IC c2)) ) implies b1 = b2 ) & (  InsCode c1 = 10 & ex b3 being   FinSequence of  INT ex b4 being  Nat st 
( b4 =  abs (c2 . (c1 int_addr2 )) & b3 = (c2 . (c1 coll_addr1 )) +* b4,(c2 . (c1 int_addr1 )) & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b3),(Next (IC c2)) ) & ex b3 being   FinSequence of  INT ex b4 being  Nat st 
( b4 =  abs (c2 . (c1 int_addr2 )) & b3 = (c2 . (c1 coll_addr1 )) +* b4,(c2 . (c1 int_addr1 )) & b2 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b3),(Next (IC c2)) ) implies b1 = b2 ) & (  InsCode c1 = 11 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) & b2 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) implies b1 = b2 ) & (  InsCode c1 = 12 & ex b3 being   FinSequence of  INT ex b4 being  Nat st 
( b4 =  abs (c2 . (c1 int_addr3 )) & b3 = b4 |-> 0 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b3),(Next (IC c2)) ) & ex b3 being   FinSequence of  INT ex b4 being  Nat st 
( b4 =  abs (c2 . (c1 int_addr3 )) & b3 = b4 |-> 0 & b2 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b3),(Next (IC c2)) ) implies b1 = b2 ) & ( not  InsCode c1 <= 8 & not  InsCode c1 = 9 & not  InsCode c1 = 10 & not  InsCode c1 = 11 & not  InsCode c1 = 12 & b1 = c2 & b2 = c2 implies b1 = b2 ) )
 ;
consistency 
for b1 being  SCM+FSA-State holds 
 ( (  InsCode c1 <= 8 &  InsCode c1 = 9 implies ( ex b2 being   Element of  SCM-Instr ex b3 being  SCM-State st 
( c1 = b2 & b3 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b2) & b1 = (c2 +* (SCM-Exec-Res b2,b3)) +* (c2 | SCM+FSA-Instr-Loc ) ) iff ex b2 being  Integerex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) /. b3 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b2),(Next (IC c2)) ) ) ) & (  InsCode c1 <= 8 &  InsCode c1 = 10 implies ( ex b2 being   Element of  SCM-Instr ex b3 being  SCM-State st 
( c1 = b2 & b3 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b2) & b1 = (c2 +* (SCM-Exec-Res b2,b3)) +* (c2 | SCM+FSA-Instr-Loc ) ) iff ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) +* b3,(c2 . (c1 int_addr1 )) & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b2),(Next (IC c2)) ) ) ) & (  InsCode c1 <= 8 &  InsCode c1 = 11 implies ( ex b2 being   Element of  SCM-Instr ex b3 being  SCM-State st 
( c1 = b2 & b3 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b2) & b1 = (c2 +* (SCM-Exec-Res b2,b3)) +* (c2 | SCM+FSA-Instr-Loc ) ) iff b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) ) ) & (  InsCode c1 <= 8 &  InsCode c1 = 12 implies ( ex b2 being   Element of  SCM-Instr ex b3 being  SCM-State st 
( c1 = b2 & b3 = (c2 | NAT ) +* (SCM-Instr-Loc  --> b2) & b1 = (c2 +* (SCM-Exec-Res b2,b3)) +* (c2 | SCM+FSA-Instr-Loc ) ) iff ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr3 )) & b2 = b3 |-> 0 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b2),(Next (IC c2)) ) ) ) & (  InsCode c1 = 9 &  InsCode c1 = 10 implies ( ex b2 being  Integerex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) /. b3 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b2),(Next (IC c2)) ) iff ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) +* b3,(c2 . (c1 int_addr1 )) & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b2),(Next (IC c2)) ) ) ) & (  InsCode c1 = 9 &  InsCode c1 = 11 implies ( ex b2 being  Integerex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) /. b3 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b2),(Next (IC c2)) ) iff b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) ) ) & (  InsCode c1 = 9 &  InsCode c1 = 12 implies ( ex b2 being  Integerex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) /. b3 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr1 ),b2),(Next (IC c2)) ) iff ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr3 )) & b2 = b3 |-> 0 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b2),(Next (IC c2)) ) ) ) & (  InsCode c1 = 10 &  InsCode c1 = 11 implies ( ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) +* b3,(c2 . (c1 int_addr1 )) & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b2),(Next (IC c2)) ) iff b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) ) ) & (  InsCode c1 = 10 &  InsCode c1 = 12 implies ( ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr2 )) & b2 = (c2 . (c1 coll_addr1 )) +* b3,(c2 . (c1 int_addr1 )) & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr1 ),b2),(Next (IC c2)) ) iff ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr3 )) & b2 = b3 |-> 0 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b2),(Next (IC c2)) ) ) ) & (  InsCode c1 = 11 &  InsCode c1 = 12 implies ( b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 int_addr3 ),(len (c2 . (c1 coll_addr2 )))),(Next (IC c2)) iff ex b2 being   FinSequence of  INT ex b3 being  Nat st 
( b3 =  abs (c2 . (c1 int_addr3 )) & b2 = b3 |-> 0 & b1 =  SCM+FSA-Chg (SCM+FSA-Chg c2,(c1 coll_addr2 ),b2),(Next (IC c2)) ) ) ) )
 ;
 
end;
 
:: deftheorem Def17   defines SCM+FSA-Exec-Res SCMFSA_1:def 17 : 
for 
b1 being   
Element of  
SCM+FSA-Instr  for 
b2, 
b3 being  
SCM+FSA-State holds 
 ( (  
InsCode b1 <= 8 implies ( 
b3 =  SCM+FSA-Exec-Res b1,
b2 iff ex 
b4 being   
Element of  
SCM-Instr ex 
b5 being  
SCM-State st 
( 
b1 = b4 & 
b5 = (b2 | NAT ) +* (SCM-Instr-Loc  --> b4) & 
b3 = (b2 +* (SCM-Exec-Res b4,b5)) +* (b2 | SCM+FSA-Instr-Loc ) ) ) ) & (  
InsCode b1 = 9 implies ( 
b3 =  SCM+FSA-Exec-Res b1,
b2 iff ex 
b4 being  
Integerex 
b5 being  
Nat st 
( 
b5 =  abs (b2 . (b1 int_addr2 )) & 
b4 = (b2 . (b1 coll_addr1 )) /. b5 & 
b3 =  SCM+FSA-Chg (SCM+FSA-Chg b2,(b1 int_addr1 ),b4),
(Next (IC b2)) ) ) ) & (  
InsCode b1 = 10 implies ( 
b3 =  SCM+FSA-Exec-Res b1,
b2 iff ex 
b4 being   
FinSequence of  
INT ex 
b5 being  
Nat st 
( 
b5 =  abs (b2 . (b1 int_addr2 )) & 
b4 = (b2 . (b1 coll_addr1 )) +* b5,
(b2 . (b1 int_addr1 )) & 
b3 =  SCM+FSA-Chg (SCM+FSA-Chg b2,(b1 coll_addr1 ),b4),
(Next (IC b2)) ) ) ) & (  
InsCode b1 = 11 implies ( 
b3 =  SCM+FSA-Exec-Res b1,
b2 iff 
b3 =  SCM+FSA-Chg (SCM+FSA-Chg b2,(b1 int_addr3 ),(len (b2 . (b1 coll_addr2 )))),
(Next (IC b2)) ) ) & (  
InsCode b1 = 12 implies ( 
b3 =  SCM+FSA-Exec-Res b1,
b2 iff ex 
b4 being   
FinSequence of  
INT ex 
b5 being  
Nat st 
( 
b5 =  abs (b2 . (b1 int_addr3 )) & 
b4 = b5 |-> 0 & 
b3 =  SCM+FSA-Chg (SCM+FSA-Chg b2,(b1 coll_addr2 ),b4),
(Next (IC b2)) ) ) ) & ( not  
InsCode b1 <= 8 & not  
InsCode b1 = 9 & not  
InsCode b1 = 10 & not  
InsCode b1 = 11 & not  
InsCode b1 = 12 implies ( 
b3 =  SCM+FSA-Exec-Res b1,
b2 iff 
b3 = b2 ) ) );
definition
func  SCM+FSA-Exec  ->   Function of  
SCM+FSA-Instr , 
Funcs (product SCM+FSA-OK ),
(product SCM+FSA-OK ) means :: SCMFSA_1:def 18
for 
b1 being   
Element of  
SCM+FSA-Instr  for 
b2 being  
SCM+FSA-State holds  
(a1 . b1) . b2 =  SCM+FSA-Exec-Res b1,
b2;
existence 
ex b1 being  Function of  SCM+FSA-Instr , Funcs (product SCM+FSA-OK ),(product SCM+FSA-OK ) st 
for b2 being   Element of  SCM+FSA-Instr 
 for b3 being  SCM+FSA-State holds  (b1 . b2) . b3 =  SCM+FSA-Exec-Res b2,b3
 
uniqueness 
for b1, b2 being  Function of  SCM+FSA-Instr , Funcs (product SCM+FSA-OK ),(product SCM+FSA-OK )  st ( for b3 being   Element of  SCM+FSA-Instr 
 for b4 being  SCM+FSA-State holds  (b1 . b3) . b4 =  SCM+FSA-Exec-Res b3,b4 ) & ( for b3 being   Element of  SCM+FSA-Instr 
 for b4 being  SCM+FSA-State holds  (b2 . b3) . b4 =  SCM+FSA-Exec-Res b3,b4 ) holds 
b1 = b2
 
 
end;
 
:: deftheorem Def18   defines SCM+FSA-Exec SCMFSA_1:def 18 : 
theorem Th20: :: SCMFSA_1:20
theorem Th21: :: SCMFSA_1:21
theorem Th22: :: SCMFSA_1:22
theorem Th23: :: SCMFSA_1:23
theorem Th24: :: SCMFSA_1:24
theorem Th25: :: SCMFSA_1:25
theorem Th26: :: SCMFSA_1:26
theorem Th27: :: SCMFSA_1:27
theorem Th28: :: SCMFSA_1:28
theorem Th29: :: SCMFSA_1:29
theorem Th30: :: SCMFSA_1:30
theorem Th31: :: SCMFSA_1:31
theorem Th32: :: SCMFSA_1:32