:: AMI_2 semantic presentation :: Showing IDV graph ... (Click the Palm Trees again to close it)
:: deftheorem defines SCM-Halt AMI_2:def 1 :
:: deftheorem defines SCM-Data-Loc AMI_2:def 2 :
:: deftheorem defines SCM-Instr-Loc AMI_2:def 3 :
definition
func SCM-Instr -> Subset of
[:(Segm 9),(((union {INT }) \/ NAT ) * ):] equals :: AMI_2:def 4
(({[SCM-Halt ,{} ]} \/ { [J,<*a*>] where J is Element of Segm 9, a is Element of SCM-Instr-Loc : J = 6 } ) \/ { [K,<*a1,b1*>] where K is Element of Segm 9, a1 is Element of SCM-Instr-Loc , b1 is Element of SCM-Data-Loc : K in {7,8} } ) \/ { [I,<*b,c*>] where I is Element of Segm 9, b, c is Element of SCM-Data-Loc : I in {1,2,3,4,5} } ;
coherence
(({[SCM-Halt ,{} ]} \/ { [J,<*a*>] where J is Element of Segm 9, a is Element of SCM-Instr-Loc : J = 6 } ) \/ { [K,<*a1,b1*>] where K is Element of Segm 9, a1 is Element of SCM-Instr-Loc , b1 is Element of SCM-Data-Loc : K in {7,8} } ) \/ { [I,<*b,c*>] where I is Element of Segm 9, b, c is Element of SCM-Data-Loc : I in {1,2,3,4,5} } is Subset of [:(Segm 9),(((union {INT }) \/ NAT ) * ):]
end;
:: deftheorem defines SCM-Instr AMI_2:def 4 :
SCM-Instr = (({[SCM-Halt ,{} ]} \/ { [J,<*a*>] where J is Element of Segm 9, a is Element of SCM-Instr-Loc : J = 6 } ) \/ { [K,<*a1,b1*>] where K is Element of Segm 9, a1 is Element of SCM-Instr-Loc , b1 is Element of SCM-Data-Loc : K in {7,8} } ) \/ { [I,<*b,c*>] where I is Element of Segm 9, b, c is Element of SCM-Data-Loc : I in {1,2,3,4,5} } ;
theorem :: AMI_2:1 :: Showing IDV graph ... (Click the Palm Tree again to close it)
canceled;
theorem :: AMI_2:2 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:3 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:4 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:5 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def5 defines SCM-OK AMI_2:def 5 :
theorem Th6: :: AMI_2:6 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th7: :: AMI_2:7 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th8: :: AMI_2:8 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th9: :: AMI_2:9 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th10: :: AMI_2:10 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th11: :: AMI_2:11 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:12 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th13: :: AMI_2:13 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th14: :: AMI_2:14 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:15 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines IC AMI_2:def 6 :
:: deftheorem defines SCM-Chg AMI_2:def 7 :
theorem :: AMI_2:16 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:17 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:18 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines SCM-Chg AMI_2:def 8 :
theorem :: AMI_2:19 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:20 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:21 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: AMI_2:22 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def9 defines address_1 AMI_2:def 9 :
:: deftheorem Def10 defines address_2 AMI_2:def 10 :
theorem :: AMI_2:23 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def11 defines jump_address AMI_2:def 11 :
theorem :: AMI_2:24 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x be
Element of
SCM-Instr ;
given mk being
Element of
SCM-Instr-Loc ,
ml being
Element of
SCM-Data-Loc ,
I being
Element of
Segm 9
such that A1:
x = [I,<*mk,ml*>]
;
func x cjump_address -> Element of
SCM-Instr-Loc means :
Def12:
:: AMI_2:def 12
ex
mk being
Element of
SCM-Instr-Loc ex
ml being
Element of
SCM-Data-Loc st
(
<*mk,ml*> = x `2 &
it = <*mk,ml*> /. 1 );
existence
ex b1, mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st
( <*mk,ml*> = x `2 & b1 = <*mk,ml*> /. 1 )
correctness
uniqueness
for b1, b2 being Element of SCM-Instr-Loc st ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st
( <*mk,ml*> = x `2 & b1 = <*mk,ml*> /. 1 ) & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st
( <*mk,ml*> = x `2 & b2 = <*mk,ml*> /. 1 ) holds
b1 = b2;
;
func x cond_address -> Element of
SCM-Data-Loc means :
Def13:
:: AMI_2:def 13
ex
mk being
Element of
SCM-Instr-Loc ex
ml being
Element of
SCM-Data-Loc st
(
<*mk,ml*> = x `2 &
it = <*mk,ml*> /. 2 );
existence
ex b1 being Element of SCM-Data-Loc ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st
( <*mk,ml*> = x `2 & b1 = <*mk,ml*> /. 2 )
correctness
uniqueness
for b1, b2 being Element of SCM-Data-Loc st ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st
( <*mk,ml*> = x `2 & b1 = <*mk,ml*> /. 2 ) & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st
( <*mk,ml*> = x `2 & b2 = <*mk,ml*> /. 2 ) holds
b1 = b2;
;
end;
:: deftheorem Def12 defines cjump_address AMI_2:def 12 :
:: deftheorem Def13 defines cond_address AMI_2:def 13 :
theorem :: AMI_2:25 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem defines IFGT AMI_2:def 14 :
:: deftheorem defines Next AMI_2:def 15 :
definition
let x be
Element of
SCM-Instr ;
let s be
SCM-State;
func SCM-Exec-Res x,
s -> SCM-State equals :: AMI_2:def 16
SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),
(Next (IC s)) if ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [1,<*mk,ml*>] SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),
(Next (IC s)) if ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [2,<*mk,ml*>] SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),
(Next (IC s)) if ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [3,<*mk,ml*>] SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),
(Next (IC s)) if ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [4,<*mk,ml*>] SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),
(Next (IC s)) if ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [5,<*mk,ml*>] SCM-Chg s,
(x jump_address ) if ex
mk being
Element of
SCM-Instr-Loc st
x = [6,<*mk*>] SCM-Chg s,
(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) if ex
mk being
Element of
SCM-Instr-Loc ex
ml being
Element of
SCM-Data-Loc st
x = [7,<*mk,ml*>] SCM-Chg s,
(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) if ex
mk being
Element of
SCM-Instr-Loc ex
ml being
Element of
SCM-Data-Loc st
x = [8,<*mk,ml*>] otherwise s;
consistency
for b1 being SCM-State holds
( ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg s,(x jump_address ) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(x jump_address ) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(x jump_address ) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] & ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(x jump_address ) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] implies ( b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(x jump_address ) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies ( b1 = SCM-Chg s,(x jump_address ) iff b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg s,(x jump_address ) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) & ( ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] & ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies ( b1 = SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) iff b1 = SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) ) )
by ZFMISC_1:33;
coherence
( ( ex mk, ml being Element of SCM-Data-Loc st x = [1,<*mk,ml*>] implies SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),(Next (IC s)) is SCM-State ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [2,<*mk,ml*>] implies SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),(Next (IC s)) is SCM-State ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [3,<*mk,ml*>] implies SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),(Next (IC s)) is SCM-State ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [4,<*mk,ml*>] implies SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),(Next (IC s)) is SCM-State ) & ( ex mk, ml being Element of SCM-Data-Loc st x = [5,<*mk,ml*>] implies SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),(Next (IC s)) is SCM-State ) & ( ex mk being Element of SCM-Instr-Loc st x = [6,<*mk*>] implies SCM-Chg s,(x jump_address ) is SCM-State ) & ( ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [7,<*mk,ml*>] implies SCM-Chg s,(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) is SCM-State ) & ( ex mk being Element of SCM-Instr-Loc ex ml being Element of SCM-Data-Loc st x = [8,<*mk,ml*>] implies SCM-Chg s,(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) is SCM-State ) & ( ( for mk, ml being Element of SCM-Data-Loc holds not x = [1,<*mk,ml*>] ) & ( for mk, ml being Element of SCM-Data-Loc holds not x = [2,<*mk,ml*>] ) & ( for mk, ml being Element of SCM-Data-Loc holds not x = [3,<*mk,ml*>] ) & ( for mk, ml being Element of SCM-Data-Loc holds not x = [4,<*mk,ml*>] ) & ( for mk, ml being Element of SCM-Data-Loc holds not x = [5,<*mk,ml*>] ) & ( for mk being Element of SCM-Instr-Loc holds not x = [6,<*mk*>] ) & ( for mk being Element of SCM-Instr-Loc
for ml being Element of SCM-Data-Loc holds not x = [7,<*mk,ml*>] ) & ( for mk being Element of SCM-Instr-Loc
for ml being Element of SCM-Data-Loc holds not x = [8,<*mk,ml*>] ) implies s is SCM-State ) )
;
end;
:: deftheorem defines SCM-Exec-Res AMI_2:def 16 :
for
x being
Element of
SCM-Instr for
s being
SCM-State holds
( ( ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [1,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg (SCM-Chg s,(x address_1 ),(s . (x address_2 ))),
(Next (IC s)) ) & ( ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [2,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) + (s . (x address_2 )))),
(Next (IC s)) ) & ( ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [3,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) - (s . (x address_2 )))),
(Next (IC s)) ) & ( ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [4,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) * (s . (x address_2 )))),
(Next (IC s)) ) & ( ex
mk,
ml being
Element of
SCM-Data-Loc st
x = [5,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg (SCM-Chg (SCM-Chg s,(x address_1 ),((s . (x address_1 )) div (s . (x address_2 )))),(x address_2 ),((s . (x address_1 )) mod (s . (x address_2 )))),
(Next (IC s)) ) & ( ex
mk being
Element of
SCM-Instr-Loc st
x = [6,<*mk*>] implies
SCM-Exec-Res x,
s = SCM-Chg s,
(x jump_address ) ) & ( ex
mk being
Element of
SCM-Instr-Loc ex
ml being
Element of
SCM-Data-Loc st
x = [7,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg s,
(IFEQ (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) & ( ex
mk being
Element of
SCM-Instr-Loc ex
ml being
Element of
SCM-Data-Loc st
x = [8,<*mk,ml*>] implies
SCM-Exec-Res x,
s = SCM-Chg s,
(IFGT (s . (x cond_address )),0,(x cjump_address ),(Next (IC s))) ) & ( ( for
mk,
ml being
Element of
SCM-Data-Loc holds not
x = [1,<*mk,ml*>] ) & ( for
mk,
ml being
Element of
SCM-Data-Loc holds not
x = [2,<*mk,ml*>] ) & ( for
mk,
ml being
Element of
SCM-Data-Loc holds not
x = [3,<*mk,ml*>] ) & ( for
mk,
ml being
Element of
SCM-Data-Loc holds not
x = [4,<*mk,ml*>] ) & ( for
mk,
ml being
Element of
SCM-Data-Loc holds not
x = [5,<*mk,ml*>] ) & ( for
mk being
Element of
SCM-Instr-Loc holds not
x = [6,<*mk*>] ) & ( for
mk being
Element of
SCM-Instr-Loc for
ml being
Element of
SCM-Data-Loc holds not
x = [7,<*mk,ml*>] ) & ( for
mk being
Element of
SCM-Instr-Loc for
ml being
Element of
SCM-Data-Loc holds not
x = [8,<*mk,ml*>] ) implies
SCM-Exec-Res x,
s = s ) );
definition
func SCM-Exec -> Function of
SCM-Instr ,
Funcs (product SCM-OK ),
(product SCM-OK ) means :: AMI_2:def 17
for
x being
Element of
SCM-Instr for
y being
SCM-State holds
(it . x) . y = SCM-Exec-Res x,
y;
existence
ex b1 being Function of SCM-Instr , Funcs (product SCM-OK ),(product SCM-OK ) st
for x being Element of SCM-Instr
for y being SCM-State holds (b1 . x) . y = SCM-Exec-Res x,y
uniqueness
for b1, b2 being Function of SCM-Instr , Funcs (product SCM-OK ),(product SCM-OK ) st ( for x being Element of SCM-Instr
for y being SCM-State holds (b1 . x) . y = SCM-Exec-Res x,y ) & ( for x being Element of SCM-Instr
for y being SCM-State holds (b2 . x) . y = SCM-Exec-Res x,y ) holds
b1 = b2
end;
:: deftheorem defines SCM-Exec AMI_2:def 17 :