diff --git a/gateway-event-b/CCTx_Animation_m2.bcm_tmp b/gateway-event-b/CCTx_Animation_m2.bcm_tmp deleted file mode 100644 index a9ca913f5e033dba364511263d863bb935c52c8e..0000000000000000000000000000000000000000 --- a/gateway-event-b/CCTx_Animation_m2.bcm_tmp +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<org.eventb.core.scMachineFile/> \ No newline at end of file diff --git a/gateway-event-b/CCTx_Animation_m2.bpo b/gateway-event-b/CCTx_Animation_m2.bpo index c49f4b5a999ea7e4cb1d479eb0607eb1a39015c7..6f503d7ef9b8b942454f5172d678cbc7b0d417a6 100644 --- a/gateway-event-b/CCTx_Animation_m2.bpo +++ b/gateway-event-b/CCTx_Animation_m2.bpo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.poFile org.eventb.core.poStamp="15"> +<org.eventb.core.poFile org.eventb.core.poStamp="16"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0"> <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> @@ -183,22 +183,22 @@ <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv14/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="15"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX/inv14/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="16"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.invariant#_m7J2EMBDEe6yC4BToIaAqA"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.event#_gvZXEMBGEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.invariant#_m7J2EMBDEe6yC4BToIaAqA"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv14\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poSequent#SUBMIT_CC_TX\/inv14\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD3"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv15/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="15"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX/inv15/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="16"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.invariant#_xgigYMBDEe6yC4BToIaAqA"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.event#_gvZXEMBGEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.invariant#_xgigYMBDEe6yC4BToIaAqA"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv15\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poSequent#SUBMIT_CC_TX\/inv15\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> </org.eventb.core.poSequent> <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> @@ -208,8 +208,8 @@ <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="0"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="16"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Animation_m2.bpo|org.eventb.core.poFile#CCTx_Animation_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="14"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="subscribed∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Animation_m2.bum|org.eventb.core.machineFile#CCTx_Animation_m2|org.eventb.core.invariant#_x2vr0MBBEe6yC4BToIaAqA"/> diff --git a/gateway-event-b/CCTx_Animation_m2.bpr b/gateway-event-b/CCTx_Animation_m2.bpr index c289a1e824a15aa4803c9ddfee7d5f6a35bcafa3..95e3993094f35d190cf3fd300760492164daf1f7 100644 --- a/gateway-event-b/CCTx_Animation_m2.bpr +++ b/gateway-event-b/CCTx_Animation_m2.bpr @@ -339,4 +339,136 @@ <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> </org.eventb.core.prFile> diff --git a/gateway-event-b/CCTx_Animation_m2.bps b/gateway-event-b/CCTx_Animation_m2.bps index f5aad141909dc07770382b30f5b133f2644a4cfd..8032deedcea34ee82eb6887bbbd807fdc36cfad6 100644 --- a/gateway-event-b/CCTx_Animation_m2.bps +++ b/gateway-event-b/CCTx_Animation_m2.bps @@ -7,8 +7,10 @@ <org.eventb.core.psStatus name="INITIALISATION/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> <org.eventb.core.psStatus name="SUBSCRIBE_SMART_CONTRACT_EVENTS/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> <org.eventb.core.psStatus name="INITIATE_CC_TX/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="LISTEN_SMART_CONTRACT_EVENT/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="LISTEN_SMART_CONTRACT_EVENT/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="14" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="TRIGGER_CC_TX_EVENT/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="15" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="TRIGGER_CC_TX_EVENT/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="15" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="LISTEN_CC_TX_EVENT/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="15" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="LISTEN_CC_TX_EVENT/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="15" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="16" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="16" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bcm b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bcm index 36b36b210f6de5b2e4c56c65323ac26b64f0dc62..6a3bc42a5a0920cc7d491e3f28e4e01f5f073a25 100644 --- a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bcm +++ b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bcm @@ -85,15 +85,15 @@ <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vy77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vzL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.refinesEvent#_1tm1sb7uEe6laZimEYihUg"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> - <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> - <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11;" org.eventb.core.predicate="user∈authenticated_users" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.guard#_1tm1s77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="user ↦ write∈write_grant" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.guard#_1tm1tL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scParameter name="user" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.parameter#_1tncwL7uEe6laZimEYihUg" org.eventb.core.type="USERS"/> - <org.eventb.core.scAction name="cross_chain_transactios" org.eventb.core.assignment="authenticated_transactions ≔ authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}" org.eventb.core.label="act11;" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.action#_1tm1sr7uEe6laZimEYihUg"/> + <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CC_TX_TO_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_hrEVZ8BGEe6yC4BToIaAqA"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> + <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11;" org.eventb.core.predicate="user∈authenticated_users" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.guard#_1tm1s77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="user ↦ write∈write_grant" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.guard#_1tm1tL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scParameter name="user" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.parameter#_1tncwL7uEe6laZimEYihUg" org.eventb.core.type="USERS"/> + <org.eventb.core.scAction name="cross_chain_transactios" org.eventb.core.assignment="authenticated_transactions ≔ authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}" org.eventb.core.label="act11;" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.action#_1tm1sr7uEe6laZimEYihUg"/> </org.eventb.core.scEvent> </org.eventb.core.scMachineFile> diff --git a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo index c0318c0498e0b00e4918839bfe757d2de3321269..078e87b60567a6f76ee7cb03e96d9810a26097ff 100644 --- a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo +++ b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.poFile org.eventb.core.poStamp="12"> +<org.eventb.core.poFile org.eventb.core.poStamp="13"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="10"> <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> @@ -117,31 +117,31 @@ <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_FABRIC/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="13"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction} → authenticated_users" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1tncwr7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1tncwr7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_FABRIC\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_FABRIC/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="13"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1tncw77uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1tncw77uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_FABRIC\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC/inv16;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_FABRIC/inv16;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="13"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})[received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}]⊆dom(write_grant)" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1toD0L7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1toD0L7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC\/inv16;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_FABRIC\/inv16;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> </org.eventb.core.poSequent> <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> @@ -151,10 +151,10 @@ <org.eventb.core.poIdentifier name="user" org.eventb.core.type="USERS"/> <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="0"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="user∈authenticated_users" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.guard#_1tm1s77uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="user ↦ write∈write_grant" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_1tm1sL7uEe6laZimEYihUg|org.eventb.core.guard#_1tm1tL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="13"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="user∈authenticated_users" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.guard#_1tm1s77uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="user ↦ write∈write_grant" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_hrEVZsBGEe6yC4BToIaAqA|org.eventb.core.guard#_1tm1tL7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="10"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="authenticated_users⊆USERS" org.eventb.core.source="/gateway-event-b/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_1tncwb7uEe6laZimEYihUg"/> diff --git a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpr b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpr index 5ced3abbbe53da8f67f2cdb1dcdb1e83a12f1288..4785dc03e8e8461c0d66dbdea2ba9d60ad153963 100644 --- a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpr +++ b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bpr @@ -380,4 +380,240 @@ <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_FABRIC/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="CROSS_CHAIN_SMART_CONTRACTS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS,PERMISSIONS,USERS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(PERMISSIONS,{read},{write}))" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9,p10"/> + <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p9,p10"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/> + <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p7,p3,p5,p8,p9,p10"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="authenticated_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> + <org.eventb.core.prIdent name="authenticated_users" org.eventb.core.type="ℙ(USERS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="user" org.eventb.core.type="USERS"/> + <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/> + <org.eventb.core.prIdent name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/> + <org.eventb.core.prPred name="p17" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈authenticated_transactions)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="authenticated_transactions∈received_cross_chain_transactions → authenticated_users"/> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway∈GATEWAYS"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction} → authenticated_users"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="write_grant∈authenticated_users ↔ {write}"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="user∈authenticated_users"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway_user∈USERS"> + <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="user ↦ write∈write_grant"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="PERMISSIONS={read,write}"/> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬read=write"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p20" org.eventb.core.predicate="authenticated_users⊆USERS"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="authenticated_transactions[received_cross_chain_transactions]⊆dom(write_grant)"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p19" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_FABRIC/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="tx" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="CROSS_CHAIN_SMART_CONTRACTS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS,PERMISSIONS,USERS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(PERMISSIONS,{read},{write}))" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> + <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees tx)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> + <org.eventb.core.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p19"> + <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p2,p3,p5,p6,p7,p19"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="authenticated_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> + <org.eventb.core.prIdent name="authenticated_users" org.eventb.core.type="ℙ(USERS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="user" org.eventb.core.type="USERS"/> + <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/> + <org.eventb.core.prIdent name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈authenticated_transactions)"/> + <org.eventb.core.prPred name="p18" org.eventb.core.predicate="tx∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})"> + <org.eventb.core.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})"/> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="user∈authenticated_users"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_user∈USERS"> + <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p19" org.eventb.core.predicate="tx∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}"> + <org.eventb.core.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="user ↦ write∈write_grant"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="PERMISSIONS={read,write}"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬read=write"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p17" org.eventb.core.predicate="authenticated_users⊆USERS"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/> + <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}"> + <org.eventb.core.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> + <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_FABRIC/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="CROSS_CHAIN_SMART_CONTRACTS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS,PERMISSIONS,USERS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(PERMISSIONS,{read},{write}))" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> + <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p1,p2,p5,p6,p7"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="authenticated_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> + <org.eventb.core.prIdent name="authenticated_users" org.eventb.core.type="ℙ(USERS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="user" org.eventb.core.type="USERS"/> + <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/> + <org.eventb.core.prIdent name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(authenticated_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})[received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}]⊆dom(write_grant)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="user∈authenticated_users"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_user∈USERS"> + <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="user ↦ write∈write_grant"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="PERMISSIONS={read,write}"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬read=write"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p17" org.eventb.core.predicate="authenticated_users⊆USERS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="authenticated_transactions[received_cross_chain_transactions]⊆dom(write_grant)"/> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> + </org.eventb.core.prProof> </org.eventb.core.prFile> diff --git a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bps b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bps index 32cff6b5b48cc53222ca3977bd9bc6fdfea86e07..c44742915bed5a39f44902c72d57c2d46d40928a 100644 --- a/gateway-event-b/CCTx_Ethereum_Fabric_m2.bps +++ b/gateway-event-b/CCTx_Ethereum_Fabric_m2.bps @@ -4,7 +4,7 @@ <org.eventb.core.psStatus name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="10" org.eventb.core.psManual="false"/> <org.eventb.core.psStatus name="INITIALISATION/inv14;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="10" org.eventb.core.psManual="false"/> <org.eventb.core.psStatus name="INITIALISATION/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="10" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_FABRIC/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="13" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_FABRIC/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="13" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_FABRIC/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="13" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bcm b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bcm new file mode 100644 index 0000000000000000000000000000000000000000..e237cdde6d0cd16caa72d15d3fd5365f429b0651 --- /dev/null +++ b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bcm @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd"> + <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.refinesMachine#'"/> + <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_c2.bcc" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.seesContext#_8rq0TL7uEe6laZimEYihUg"/> + <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1"> + <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_lhKcab7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_lhKcar7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_lhKca77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_lhTmML7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lhTmNr7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_lhTmMr7uEe6laZimEYihUg" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lhTmN77uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lhTmM77uEe6laZimEYihUg" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_lhTmMb7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lhTmNL7uEe6laZimEYihUg" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lhTmNb7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.scInternalContext> + <org.eventb.core.scInternalContext name="CCTx_Fabric_Ethereum_c2"> + <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/> + <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.carrierSet#_seJchL7uEe6laZimEYihUg" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_seJcgr7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.scInternalContext> + <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c5" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZ77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c6" org.eventb.core.label="inv6;" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdaL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c4" org.eventb.core.label="inv31" org.eventb.core.predicate="subscribed∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEMEGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c5" org.eventb.core.label="inv32" org.eventb.core.predicate="initiated∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c6" org.eventb.core.label="inv33" org.eventb.core.predicate="triggered∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c7" org.eventb.core.label="inv34" org.eventb.core.predicate="gateway_processing∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c8" org.eventb.core.label="inv35" org.eventb.core.predicate="submit_cc_tx∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c9" org.eventb.core.label="inv36" org.eventb.core.predicate="wallet_created∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWOEIMEGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c:" org.eventb.core.label="inv37" org.eventb.core.predicate="wallet_amount∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scVariable name="gateway_processing" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_LY1Q0cEEEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scVariable name="triggered_events" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_yREdar7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.scVariable name="wallet_amount" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_9cZOUMEHEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scVariable name="initiated" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_LY0pwcEEEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scVariable name="submit_cc_tx" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_LY134MEEEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scVariable name="subscribed" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_LY0pwMEEEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scVariable name="accounts" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_8rz-D77uEe6laZimEYihUg" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_yREdbb7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.scVariable name="subscriptions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_yREda77uEe6laZimEYihUg" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.scVariable name="triggered" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_LY1Q0MEEEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scVariable name="gateway_pending_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_yREdbL7uEe6laZimEYihUg" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_yREdab7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.scVariable name="wallet_created" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.variable#_qWPSQMEGEe6yC4BToIaAqA" org.eventb.core.type="ℤ"/> + <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactiont" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vsb7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vsr7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name=")" org.eventb.core.assignment="subscriptions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)" org.eventb.core.label="act3;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vs77uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="*" org.eventb.core.assignment="gateway_pending_transactions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)" org.eventb.core.label="act4;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vtL7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="+" org.eventb.core.assignment="received_cross_chain_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)" org.eventb.core.label="act6;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vtb7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XvgZ8MEBEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="-" org.eventb.core.assignment="subscribed ≔ 0" org.eventb.core.label="init_subscribed" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_Xag6AMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="." org.eventb.core.assignment="initiated ≔ 0" org.eventb.core.label="init_initiated" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XahhEMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="/" org.eventb.core.assignment="triggered ≔ 0" org.eventb.core.label="init_triggered" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XahhEcEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="0" org.eventb.core.assignment="gateway_processing ≔ 0" org.eventb.core.label="init_gateway_processing" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XahhEsEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="1" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.label="init_submit_cc_tx" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XahhE8EEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="2" org.eventb.core.assignment="wallet_created ≔ 0" org.eventb.core.label="init_wallet_created" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_y69sYMEGEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="3" org.eventb.core.assignment="wallet_amount ≔ 0" org.eventb.core.label="init_wallet_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_BKVfsMEIEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactionu" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionu" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.guard#_yQ9vuL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="(" org.eventb.core.assignment="subscriptions ≔ subscriptions∪{gateway ↦ source_smart_contract}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.action#_yQ9vt77uEe6laZimEYihUg"/> + <org.eventb.core.scAction name=")" org.eventb.core.assignment="subscribed ≔ 1" org.eventb.core.label="act111" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi|org.eventb.core.action#_hvM14MEEEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactionv" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIATE_CC_TX_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUj"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUj|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vu77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd3;" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vvL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="transactioo" org.eventb.core.assignment="received_transactions ≔ received_transactions∪{source_smart_contract ↦ transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vur7uEe6laZimEYihUg"/> + <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vvb7uEe6laZimEYihUg" org.eventb.core.type="TRANSACTIONS"/> + <org.eventb.core.scAction name="transactiop" org.eventb.core.assignment="initiated ≔ 1" org.eventb.core.label="act31" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUj|org.eventb.core.action#_kp_MAMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="transactioq" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.label="act32" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUj|org.eventb.core.action#_kqAaIMEEEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactionw" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="TRIGGER_CC_TX_EVENT_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionw" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vv77uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vwL7uEe6laZimEYihUg"/> + <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vxL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vw77uEe6laZimEYihUg" org.eventb.core.type="TRANSACTIONS"/> + <org.eventb.core.scAction name="cross_chain_evenw" org.eventb.core.assignment="triggered ≔ 1" org.eventb.core.label="act31" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk|org.eventb.core.action#_kp_zEMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="cross_chain_evenx" org.eventb.core.assignment="initiated ≔ 0" org.eventb.core.label="act32" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk|org.eventb.core.action#_kqBoQMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="cross_chain_eveny" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.label="act33" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk|org.eventb.core.action#_y9WKoMEJEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_CC_TX_EVENT_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionx" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vxr7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vx77uEe6laZimEYihUg"/> + <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vy77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vzL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.scAction name="cross_chain_transactioq" org.eventb.core.assignment="gateway_processing ≔ 1" org.eventb.core.label="act31" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl|org.eventb.core.action#_kqBBMMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="cross_chain_transactior" org.eventb.core.assignment="triggered ≔ 0" org.eventb.core.label="act32" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl|org.eventb.core.action#_pHPaccEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="cross_chain_transactios" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.label="act33" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl|org.eventb.core.action#_EcXw0MELEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CC_TX_TO_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactios" org.eventb.core.label="grd13" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBA8EBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="accounts ≔ accounts{gateway_address ↦ accounts(gateway_address) − fee}" org.eventb.core.label="act11" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.action#_XvhBAMEBEe6yC4BToIaAqA"/> + <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.scParameter name="fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_8rz9977uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> + <org.eventb.core.scAction name="cross_chain_transactiou" org.eventb.core.assignment="submit_cc_tx ≔ 1" org.eventb.core.label="act31" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.action#_pHPacMEEEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="cross_chain_transactiov" org.eventb.core.assignment="gateway_processing ≔ 0" org.eventb.core.label="act32" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.action#_EcY-8MELEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="cross_chain_transactiow" org.eventb.core.assignment="wallet_amount ≔ accounts(gateway_address) − fee" org.eventb.core.label="act33" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.action#_EcZmAMELEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactionz" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionz" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts∪{address ↦ 0}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.action#_XvhoEMEBEe6yC4BToIaAqA"/> + <org.eventb.core.scParameter name="address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz9_L7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.scGuard name="addresu" org.eventb.core.label="grd31" org.eventb.core.predicate="address=gateway_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn|org.eventb.core.guard#_wieyEMEGEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="addresv" org.eventb.core.assignment="wallet_created ≔ 1" org.eventb.core.label="act31" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn|org.eventb.core.action#_qWM2AMEGEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transaction{" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transaction{" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts{address ↦ accounts(address)+amount}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_XvhoE8EBEe6yC4BToIaAqA"/> + <org.eventb.core.scParameter name="amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Ab7uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> + <org.eventb.core.scParameter name="address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Ar7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.scAction name="addresu" org.eventb.core.assignment="wallet_amount ≔ accounts(address)+amount" org.eventb.core.label="act31" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.action#_7CFvEMEHEe6yC4BToIaAqA"/> + <org.eventb.core.scAction name="addresv" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.label="act32" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.action#_FU5CUMENEe6yC4BToIaAqA"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transaction|" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transaction\|" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp|org.eventb.core.refinesEvent#'"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPI8EBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2McEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="," org.eventb.core.label="grd6" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="accounts ≔ ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_XviPIMEBEe6yC4BToIaAqA"/> + <org.eventb.core.scParameter name="user_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-DL7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.scParameter name="validator_fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-C77uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> + <org.eventb.core.scParameter name="transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Db7uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> + </org.eventb.core.scEvent> +</org.eventb.core.scMachineFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo new file mode 100644 index 0000000000000000000000000000000000000000..655f7d092a527a0d408da2cf9bfb9f4927f2295c --- /dev/null +++ b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo @@ -0,0 +1,370 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<org.eventb.core.poFile org.eventb.core.poStamp="13"> + <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_lhKcab7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_lhKcar7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_lhKca77uEe6laZimEYihUg"/> + <org.eventb.core.poIdentifier name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.poIdentifier name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgL7uEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="gateway_processing" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="wallet_amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="initiated" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="submit_cc_tx" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="subscribed" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poIdentifier name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.poIdentifier name="triggered" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="wallet_created" org.eventb.core.type="ℤ"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactiont" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactionu" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZb7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactionv" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactionw" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZ77uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactionx" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdaL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactiony" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="INITIALISATION/inv31/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv31\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIALISATION/inv32/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv32\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIALISATION/inv33/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv33\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIALISATION/inv34/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv34\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD3"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIALISATION/inv35/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv35\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIALISATION/inv36/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWOEIMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWOEIMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv36\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD5"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIALISATION/inv37/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIALISATION\/inv37\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD6"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="gateway_processing'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="submit_cc_tx'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="triggered'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="subscribed'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="wallet_created'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="wallet_amount'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="subscriptions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="initiated'" org.eventb.core.type="ℤ"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="12"/> + <org.eventb.core.poSequent name="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC/inv31/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionu"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rq0Tr7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC\/inv31\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="subscribed'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="subscriptions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.guard#_yQ9vuL7uEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="INITIATE_CC_TX_IN_FABRIC/inv32/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionv"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_2kWtoMBFEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUj"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIATE_CC_TX_IN_FABRIC\/inv32\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="INITIATE_CC_TX_IN_FABRIC/inv35/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionv"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_2kWtoMBFEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUj"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#INITIATE_CC_TX_IN_FABRIC\/inv35\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="submit_cc_tx'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="transaction" org.eventb.core.type="TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="initiated'" org.eventb.core.type="ℤ"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vu77uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vvL7uEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv32/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_IXOSUMBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#TRIGGER_CC_TX_EVENT_IN_FABRIC\/inv32\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv33/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_IXOSUMBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#TRIGGER_CC_TX_EVENT_IN_FABRIC\/inv33\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv35/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_IXOSUMBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUk"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#TRIGGER_CC_TX_EVENT_IN_FABRIC\/inv35\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="submit_cc_tx'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="triggered'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="transaction" org.eventb.core.type="TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="initiated'" org.eventb.core.type="ℤ"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwb7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwr7uEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv33/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionx"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_XiaDn8BGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#LISTEN_CC_TX_EVENT_IN_FABRIC\/inv33\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv34/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionx"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_XiaDn8BGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#LISTEN_CC_TX_EVENT_IN_FABRIC\/inv34\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD3"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv35/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionx"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_XiaDn8BGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUl"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#LISTEN_CC_TX_EVENT_IN_FABRIC\/inv35\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="gateway_processing'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="submit_cc_tx'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="triggered'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/inv34/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_ETHEREUM\/inv34\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD3"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/inv35/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_ETHEREUM\/inv35\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/inv37/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts(gateway_address) − fee∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_ETHEREUM\/inv37\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD6"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/act33/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.action#_EcZmAMELEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.action#_EcZmAMELEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="gateway_processing'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="submit_cc_tx'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poIdentifier name="wallet_amount'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="fee" org.eventb.core.type="ℤ"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBA8EBEe6yC4BToIaAqA"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="CREATE_ADDRESS_IN_ETHEREUM/inv36/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="1∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWOEIMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWOEIMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#CREATE_ADDRESS_IN_ETHEREUM\/inv36\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD5"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.poIdentifier name="wallet_created'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="address=gateway_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn|org.eventb.core.guard#_wieyEMEGEe6yC4BToIaAqA"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv35/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="13"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM\/inv35\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD4"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv37/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="13"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts(address)+amount∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM\/inv37\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD6"/> + </org.eventb.core.poSequent> + <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act31/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="13"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.action#_7CFvEMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.action#_7CFvEMEHEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> + </org.eventb.core.poSequent> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="13"> + <org.eventb.core.poIdentifier name="amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="submit_cc_tx'" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poIdentifier name="wallet_amount'" org.eventb.core.type="ℤ"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.poStamp="13"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFcEBEe6yC4BToIaAqA"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poIdentifier name="validator_fee" org.eventb.core.type="ℤ"/> + <org.eventb.core.poIdentifier name="user_address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction\|" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPI8EBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2McEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="12"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="subscribed∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="initiated∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEcEGEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="triggered∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdEsEGEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="gateway_processing∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdE8EGEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="submit_cc_tx∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWNdFMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="wallet_created∈{0,1}" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_qWOEIMEGEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD6" org.eventb.core.predicate="wallet_amount∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_Animation_m3|org.eventb.core.invariant#_9cXZIMEHEe6yC4BToIaAqA"/> + </org.eventb.core.poPredicateSet> +</org.eventb.core.poFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpr b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpr new file mode 100644 index 0000000000000000000000000000000000000000..8ec064e9c4fc5e93cb0c406ab2cb26a645aa3187 --- /dev/null +++ b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bpr @@ -0,0 +1,839 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<org.eventb.core.prFile version="1"> + <org.eventb.core.prProof name="INITIALISATION/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ source_smart_contract∈subscriptions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIATE_CC_TX_IN_FABRIC/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬transaction∈received_transactions[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="transaction" org.eventb.core.type="TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="transaction" org.eventb.core.type="TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv14/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv31/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv32/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv33/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv34/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv36/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv37/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈ℕ"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC/inv31/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ source_smart_contract∈subscriptions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIATE_CC_TX_IN_FABRIC/inv32/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬transaction∈received_transactions[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="transaction" org.eventb.core.type="TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="transaction" org.eventb.core.type="TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv32/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv33/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv33/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv34/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv34/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="CREATE_ADDRESS_IN_ETHEREUM/inv36/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬address∈dom(accounts)"> + <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∉dom(accounts)"> + <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="1∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv37/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p4,p7,p11,p3,p2,p6,p10,p5,p1,p8"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="gateway_processing" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="initiated" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="submit_cc_tx" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="subscribed" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="triggered" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="wallet_amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="wallet_created" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p18" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway∈GATEWAYS"> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_processing∈{0,1}"/> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="initiated∈{0,1}"/> + <org.eventb.core.prPred name="p19" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="wallet_amount∈ℕ"/> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="submit_cc_tx∈{0,1}"/> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_address∈ADDRESS"> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p17" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="subscribed∈{0,1}"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="amount>0"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="wallet_created∈{0,1}"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p20" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts(address)+amount∈ℕ"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered∈{0,1}"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act31/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv37/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p8,p2,p13,p1,p5,p10,p4,p7,p3,p9,p11,p6"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="fee" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="gateway_processing" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="initiated" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="submit_cc_tx" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="subscribed" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="triggered" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="wallet_amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="wallet_created" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p20" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway∈GATEWAYS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_processing∈{0,1}"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initiated∈{0,1}"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p21" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="wallet_amount∈ℕ"/> + <org.eventb.core.prPred name="p18" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="submit_cc_tx∈{0,1}"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="fee>0"/> + <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_address∈ADDRESS"/> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/> + <org.eventb.core.prPred name="p19" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="subscribed∈{0,1}"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="accounts(gateway_address)≥fee"/> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="wallet_created∈{0,1}"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts(gateway_address) − fee∈ℕ"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p22" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="triggered∈{0,1}"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/act33/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIATE_CC_TX_IN_FABRIC/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬transaction∈received_transactions[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="transaction" org.eventb.core.type="TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="transaction" org.eventb.core.type="TRANSACTIONS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬cross_chain_event∈triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬gateway ↦ cross_chain_transaction∈gateway_pending_transactions"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈{0,1}"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> +</org.eventb.core.prFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bps b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bps new file mode 100644 index 0000000000000000000000000000000000000000..3a691541b298939ac74683ddf02543cd5803b2bb --- /dev/null +++ b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bps @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<org.eventb.core.psFile> + <org.eventb.core.psStatus name="INITIALISATION/inv31/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv32/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv33/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv34/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv36/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv37/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC/inv31/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIATE_CC_TX_IN_FABRIC/inv32/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIATE_CC_TX_IN_FABRIC/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv32/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv33/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="TRIGGER_CC_TX_EVENT_IN_FABRIC/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv33/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv34/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="LISTEN_CC_TX_EVENT_IN_FABRIC/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/inv34/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/inv37/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/act33/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="CREATE_ADDRESS_IN_ETHEREUM/inv36/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="12" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv35/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="13" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv37/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="13" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act31/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="13" org.eventb.core.psManual="false"/> +</org.eventb.core.psFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum new file mode 100644 index 0000000000000000000000000000000000000000..152859871f1647a94d9a16562e837eaad1433f57 --- /dev/null +++ b/gateway-event-b/CCTx_Fabric_Ethereum_Animation_m3.bum @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_FScLfcENEe6yC4BToIaAqA" org.eventb.texttools.text_lastmodified="1706797242871" org.eventb.texttools.text_representation="machine CCTx_Fabric_Ethereum_Animation_m3 refines CCTx_Fabric_Ethereum_m2 sees CCTx_Fabric_Ethereum_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions accounts subscribed initiated triggered gateway_processing submit_cc_tx wallet_created wallet_amount invariants 	@inv31 subscribed ∈ {0,1} 	@inv32 initiated ∈ {0,1} 	@inv33 triggered ∈ {0,1} 	@inv34 gateway_processing ∈ {0,1} 	@inv35 submit_cc_tx ∈ {0,1} 	@inv36 wallet_created ∈ {0,1} 	@inv37 wallet_amount ∈ ℕ events event INITIALISATION extends INITIALISATION 	then 		@init_subscribed 		 subscribed ≔ 0 		@init_initiated 		 initiated ≔ 0 		@init_triggered 		 triggered ≔ 0 		@init_gateway_processing gateway_processing ≔ 0 		@init_submit_cc_tx 		 submit_cc_tx ≔ 0 		@init_wallet_created	 wallet_created ≔ 0 		@init_wallet_amount		 wallet_amount ≔ 0 end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC 	then 		@act111 subscribed ≔ 1 end event INITIATE_CC_TX_IN_FABRIC extends INITIATE_CC_TX_IN_FABRIC 	then 		@act31 initiated ≔ 1 		@act32 submit_cc_tx ≔ 0 end event TRIGGER_CC_TX_EVENT_IN_FABRIC extends TRIGGER_CC_TX_EVENT_IN_FABRIC 	then 		@act31 triggered ≔ 1 		@act32 initiated ≔ 0 		@act33 submit_cc_tx ≔ 0 end event LISTEN_CC_TX_EVENT_IN_FABRIC extends LISTEN_CC_TX_EVENT_IN_FABRIC then 		@act31 gateway_processing ≔ 1 		@act32 triggered ≔ 0 		@act33 submit_cc_tx ≔ 0 end event SUBMIT_CC_TX_TO_ETHEREUM extends SUBMIT_CC_TX_TO_ETHEREUM 	then 		@act31 submit_cc_tx ≔ 1 		@act32 gateway_processing ≔ 0 		@act33 wallet_amount ≔ accounts(gateway_address) − fee end event CREATE_ADDRESS_IN_ETHEREUM // Users can create their address on Ethereum (RQ1 and RQ2) extends CREATE_ADDRESS_IN_ETHEREUM 	when 		@grd31 address = gateway_address 	then 		@act31 wallet_created ≔ 1 end event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM // Users (including the gateway) can deposit Ethers on their address (RQ3) extends DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM 	then 		@act31 wallet_amount ≔ accounts(address) + amount 		@act32 submit_cc_tx ≔ 0 end event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM // The user can transfer an estimated fee to the gateways account (RQ1) extends SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM end end " version="5"> + <org.eventb.core.refinesMachine name="'" org.eventb.core.target="CCTx_Fabric_Ethereum_m2"/> + <org.eventb.core.seesContext name="_8rq0TL7uEe6laZimEYihUg" org.eventb.core.target="CCTx_Fabric_Ethereum_c2"/> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUh" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION" org.eventb.emf.persistence.emf_id="_FScLW8ENEe6yC4BToIaAqA"> + <org.eventb.core.action name="_Xag6AMEEEe6yC4BToIaAqA" org.eventb.core.assignment="subscribed ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_subscribed" org.eventb.emf.persistence.emf_id="_FScLVMENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_XahhEMEEEe6yC4BToIaAqA" org.eventb.core.assignment="initiated ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_initiated" org.eventb.emf.persistence.emf_id="_FScLVcENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_XahhEcEEEe6yC4BToIaAqA" org.eventb.core.assignment="triggered ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_triggered" org.eventb.emf.persistence.emf_id="_FScLVsENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_XahhEsEEEe6yC4BToIaAqA" org.eventb.core.assignment="gateway_processing ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_gateway_processing" org.eventb.emf.persistence.emf_id="_FScLV8ENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_XahhE8EEEe6yC4BToIaAqA" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_submit_cc_tx" org.eventb.emf.persistence.emf_id="_FScLWMENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_y69sYMEGEe6yC4BToIaAqA" org.eventb.core.assignment="wallet_created ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_wallet_created" org.eventb.emf.persistence.emf_id="_FScLWcENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_BKVfsMEIEe6yC4BToIaAqA" org.eventb.core.assignment="wallet_amount ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="init_wallet_amount" org.eventb.emf.persistence.emf_id="_FScLWsENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUi" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.emf.persistence.emf_id="_FScLXsENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC"/> + <org.eventb.core.action name="_hvM14MEEEe6yC4BToIaAqA" org.eventb.core.assignment="subscribed ≔ 1" org.eventb.core.generated="false" org.eventb.core.label="act111" org.eventb.emf.persistence.emf_id="_FScLXcENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUj" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CC_TX_IN_FABRIC" org.eventb.emf.persistence.emf_id="_FScLYsENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="INITIATE_CC_TX_IN_FABRIC"/> + <org.eventb.core.action name="_kp_MAMEEEe6yC4BToIaAqA" org.eventb.core.assignment="initiated ≔ 1" org.eventb.core.generated="false" org.eventb.core.label="act31" org.eventb.emf.persistence.emf_id="_FScLYMENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_kqAaIMEEEe6yC4BToIaAqA" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act32" org.eventb.emf.persistence.emf_id="_FScLYcENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUk" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="TRIGGER_CC_TX_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_FScLZ8ENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="TRIGGER_CC_TX_EVENT_IN_FABRIC"/> + <org.eventb.core.action name="_kp_zEMEEEe6yC4BToIaAqA" org.eventb.core.assignment="triggered ≔ 1" org.eventb.core.generated="false" org.eventb.core.label="act31" org.eventb.emf.persistence.emf_id="_FScLZMENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_kqBoQMEEEe6yC4BToIaAqA" org.eventb.core.assignment="initiated ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act32" org.eventb.emf.persistence.emf_id="_FScLZcENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_y9WKoMEJEe6yC4BToIaAqA" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act33" org.eventb.emf.persistence.emf_id="_FScLZsENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUl" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_CC_TX_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_FScLbMENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="LISTEN_CC_TX_EVENT_IN_FABRIC"/> + <org.eventb.core.action name="_kqBBMMEEEe6yC4BToIaAqA" org.eventb.core.assignment="gateway_processing ≔ 1" org.eventb.core.generated="false" org.eventb.core.label="act31" org.eventb.emf.persistence.emf_id="_FScLacENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_pHPaccEEEe6yC4BToIaAqA" org.eventb.core.assignment="triggered ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act32" org.eventb.emf.persistence.emf_id="_FScLasENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_EcXw0MELEe6yC4BToIaAqA" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act33" org.eventb.emf.persistence.emf_id="_FScLa8ENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUm" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CC_TX_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="_FScLccENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBMIT_CC_TX_TO_ETHEREUM"/> + <org.eventb.core.action name="_pHPacMEEEe6yC4BToIaAqA" org.eventb.core.assignment="submit_cc_tx ≔ 1" org.eventb.core.generated="false" org.eventb.core.label="act31" org.eventb.emf.persistence.emf_id="_FScLbsENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_EcY-8MELEe6yC4BToIaAqA" org.eventb.core.assignment="gateway_processing ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act32" org.eventb.emf.persistence.emf_id="_FScLb8ENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_EcZmAMELEe6yC4BToIaAqA" org.eventb.core.assignment="wallet_amount ≔ accounts(gateway_address) − fee" org.eventb.core.generated="false" org.eventb.core.label="act33" org.eventb.emf.persistence.emf_id="_FScLcMENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUn" org.eventb.core.comment="Users can create their address on Ethereum (RQ1 and RQ2)" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_FScLdcENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="CREATE_ADDRESS_IN_ETHEREUM"/> + <org.eventb.core.action name="_qWM2AMEGEe6yC4BToIaAqA" org.eventb.core.assignment="wallet_created ≔ 1" org.eventb.core.generated="false" org.eventb.core.label="act31" org.eventb.emf.persistence.emf_id="_FScLdMENEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_wieyEMEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd31" org.eventb.core.predicate="address = gateway_address" org.eventb.emf.persistence.emf_id="_FScLc8ENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUo" org.eventb.core.comment="Users (including the gateway) can deposit Ethers on their address (RQ3)" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_FScLecENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM"/> + <org.eventb.core.action name="_7CFvEMEHEe6yC4BToIaAqA" org.eventb.core.assignment="wallet_amount ≔ accounts(address) + amount" org.eventb.core.generated="false" org.eventb.core.label="act31" org.eventb.emf.persistence.emf_id="_FScLd8ENEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_FU5CUMENEe6yC4BToIaAqA" org.eventb.core.assignment="submit_cc_tx ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act32" org.eventb.emf.persistence.emf_id="_FScLeMENEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUp" org.eventb.core.comment="The user can transfer an estimated fee to the gateways account (RQ1)" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_FScLe8ENEe6yC4BToIaAqA"> + <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM"/> + </org.eventb.core.event> + <org.eventb.core.invariant name="_qWNdEMEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv31" org.eventb.core.predicate="subscribed ∈ {0,1}" org.eventb.emf.persistence.emf_id="_FScLTcENEe6yC4BToIaAqA"/> + <org.eventb.core.invariant name="_qWNdEcEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv32" org.eventb.core.predicate="initiated ∈ {0,1}" org.eventb.emf.persistence.emf_id="_FScLTsENEe6yC4BToIaAqA"/> + <org.eventb.core.invariant name="_qWNdEsEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv33" org.eventb.core.predicate="triggered ∈ {0,1}" org.eventb.emf.persistence.emf_id="_FScLT8ENEe6yC4BToIaAqA"/> + <org.eventb.core.invariant name="_qWNdE8EGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv34" org.eventb.core.predicate="gateway_processing ∈ {0,1}" org.eventb.emf.persistence.emf_id="_FScLUMENEe6yC4BToIaAqA"/> + <org.eventb.core.invariant name="_qWNdFMEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv35" org.eventb.core.predicate="submit_cc_tx ∈ {0,1}" org.eventb.emf.persistence.emf_id="_FScLUcENEe6yC4BToIaAqA"/> + <org.eventb.core.invariant name="_qWOEIMEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv36" org.eventb.core.predicate="wallet_created ∈ {0,1}" org.eventb.emf.persistence.emf_id="_FScLUsENEe6yC4BToIaAqA"/> + <org.eventb.core.invariant name="_9cXZIMEHEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="inv37" org.eventb.core.predicate="wallet_amount ∈ ℕ" org.eventb.emf.persistence.emf_id="_FScLU8ENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdab7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_FScLQMENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdar7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_FScLQcENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREda77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_FScLQsENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdbL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_FScLQ8ENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdbb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_FScLRMENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_8rz-D77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="accounts" org.eventb.emf.persistence.emf_id="_FScLRcENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_LY0pwMEEEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="subscribed" org.eventb.emf.persistence.emf_id="_FScLRsENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_LY0pwcEEEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="initiated" org.eventb.emf.persistence.emf_id="_FScLR8ENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_LY1Q0MEEEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="triggered" org.eventb.emf.persistence.emf_id="_FScLSMENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_LY1Q0cEEEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_processing" org.eventb.emf.persistence.emf_id="_FScLScENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_LY134MEEEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="submit_cc_tx" org.eventb.emf.persistence.emf_id="_FScLSsENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_qWPSQMEGEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="wallet_created" org.eventb.emf.persistence.emf_id="_FScLS8ENEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_9cZOUMEHEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.identifier="wallet_amount" org.eventb.emf.persistence.emf_id="_FScLTMENEe6yC4BToIaAqA"/> +</org.eventb.core.machineFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_c2.bcc b/gateway-event-b/CCTx_Fabric_Ethereum_c2.bcc index 90a1626c9ad88b670b5ee2212ea2f7bbd167b7bd..0b9639ec2d67fc680740c8a57890bb7935c01679 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_c2.bcc +++ b/gateway-event-b/CCTx_Fabric_Ethereum_c2.bcc @@ -15,8 +15,6 @@ <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lhTmNb7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> </org.eventb.core.scInternalContext> <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_seJcg77uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.carrierSet#_seJchL7uEe6laZimEYihUg" org.eventb.core.type="ℙ(ADDRESS)"/> <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_seJcgr7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> </org.eventb.core.scContextFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc b/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc index 35445e5381975a6662fb650372449f68272d6ac6..470e969b483d176b425f731bbbd7dd93626c7ea0 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc +++ b/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc @@ -1,9 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_sd92Vb7uEe6laZimEYihUg" org.eventb.texttools.text_lastmodified="1706564289077" org.eventb.texttools.text_representation="context CCTx_Fabric_Ethereum_c2 extends CCTx_Abstract_DLT_c1 sets ADDRESS constants gateway_address initial_deposit axioms @axm11; gateway_address ∈ ADDRESS @axm12; initial_deposit > 0 end" version="3"> +<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_fMaE08ELEe6yC4BToIaAqA" org.eventb.texttools.text_lastmodified="1706796557727" org.eventb.texttools.text_representation="context CCTx_Fabric_Ethereum_c2 extends CCTx_Abstract_DLT_c1 sets ADDRESS constants gateway_address axioms @axm11; gateway_address ∈ ADDRESS end" version="3"> <org.eventb.core.extendsContext name="'" org.eventb.core.target="CCTx_Abstract_DLT_c1"/> - <org.eventb.core.axiom name="_seJcgL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_sd92U77uEe6laZimEYihUg"/> - <org.eventb.core.axiom name="_seJcgb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit > 0" org.eventb.emf.persistence.emf_id="_sd92VL7uEe6laZimEYihUg"/> - <org.eventb.core.constant name="_seJcgr7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_address" org.eventb.emf.persistence.emf_id="_sd92Ub7uEe6laZimEYihUg"/> - <org.eventb.core.constant name="_seJcg77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="initial_deposit" org.eventb.emf.persistence.emf_id="_sd92Ur7uEe6laZimEYihUg"/> - <org.eventb.core.carrierSet name="_seJchL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="ADDRESS" org.eventb.emf.persistence.emf_id="_sd92UL7uEe6laZimEYihUg"/> + <org.eventb.core.axiom name="_seJcgL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_fMaE0sELEe6yC4BToIaAqA"/> + <org.eventb.core.constant name="_seJcgr7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_address" org.eventb.emf.persistence.emf_id="_fMaE0cELEe6yC4BToIaAqA"/> + <org.eventb.core.carrierSet name="_seJchL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="ADDRESS" org.eventb.emf.persistence.emf_id="_fMaE0MELEe6yC4BToIaAqA"/> </org.eventb.core.contextFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm index d2885a19b2c5199350b52c8c37d3aa3d4306ac42..5dec5ad70cc32594a1087595cc603b0e6aa8450b 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm +++ b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm @@ -28,7 +28,7 @@ <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c5" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZ77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c6" org.eventb.core.label="inv6;" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdaL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> <org.eventb.core.scVariable name="triggered_events" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_yREdar7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.scVariable name="accounts" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_8rz-D77uEe6laZimEYihUg" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_yREdbb7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -42,7 +42,7 @@ <org.eventb.core.scAction name=")" org.eventb.core.assignment="subscriptions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)" org.eventb.core.label="act3;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vs77uEe6laZimEYihUg"/> <org.eventb.core.scAction name="*" org.eventb.core.assignment="gateway_pending_transactions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)" org.eventb.core.label="act4;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vtL7uEe6laZimEYihUg"/> <org.eventb.core.scAction name="+" org.eventb.core.assignment="received_cross_chain_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)" org.eventb.core.label="act6;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vtb7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_8rq0Tb7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XvgZ8MEBEe6yC4BToIaAqA"/> </org.eventb.core.scEvent> <org.eventb.core.scEvent name="received_cross_chain_transactionu" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rq0Tr7uEe6laZimEYihUg"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionu" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rq0Tr7uEe6laZimEYihUg|org.eventb.core.refinesEvent#_8rq0T77uEe6laZimEYihUg"/> @@ -75,41 +75,41 @@ <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vy77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vzL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.refinesEvent#_8rz98r7uEe6laZimEYihUg"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> - <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> - <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11;" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99L7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99b7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactios" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99r7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scParameter name="fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz9977uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> - <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="accounts ≔ accounts{gateway_address ↦ accounts(gateway_address) − fee}" org.eventb.core.label="act11;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9877uEe6laZimEYihUg"/> + <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CC_TX_TO_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_i1L-4MBGEe6yC4BToIaAqA"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> + <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactios" org.eventb.core.label="grd13" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBA8EBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scParameter name="fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_8rz9977uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> + <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="accounts ≔ accounts{gateway_address ↦ accounts(gateway_address) − fee}" org.eventb.core.label="act11" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.action#_XvhBAMEBEe6yC4BToIaAqA"/> </org.eventb.core.scEvent> <org.eventb.core.scEvent name="received_cross_chain_transactionz" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg"> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-r7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz9_L7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts∪{address ↦ 0}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.action#_8rz9-b7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts∪{address ↦ 0}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.action#_XvhoEMEBEe6yC4BToIaAqA"/> </org.eventb.core.scEvent> <org.eventb.core.scEvent name="received_cross_chain_transaction{" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg"> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9_77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz-AL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Ab7uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scParameter name="address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Ar7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts{address ↦ accounts(address)+amount}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9_r7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts{address ↦ accounts(address)+amount}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_XvhoE8EBEe6yC4BToIaAqA"/> </org.eventb.core.scEvent> <org.eventb.core.scEvent name="received_cross_chain_transaction|" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg"> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Bb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Br7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-B77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4;" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-CL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="," org.eventb.core.label="grd6;" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPI8EBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2McEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="," org.eventb.core.label="grd6" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="user_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-DL7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> <org.eventb.core.scParameter name="validator_fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-C77uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scParameter name="transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Db7uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> - <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="accounts ≔ ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_8rz-BL7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="accounts ≔ ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_XviPIMEBEe6yC4BToIaAqA"/> </org.eventb.core.scEvent> </org.eventb.core.scMachineFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo index b5621a21b4cd24f39913374a4efb1c80db5f8358..2fb11cce70117368fefc465bdbec8c85477afaf2 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo +++ b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.poFile org.eventb.core.poStamp="28"> +<org.eventb.core.poFile org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="26"> <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> @@ -18,7 +18,7 @@ <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgL7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTX" org.eventb.core.predicate="initial_deposit>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgb7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="53"> <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.poIdentifier name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -31,16 +31,16 @@ <org.eventb.core.poPredicate name="received_cross_chain_transactionw" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZ77uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="received_cross_chain_transactionx" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdaL7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="INITIALISATION/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="26"> + <org.eventb.core.poSequent name="INITIALISATION/inv11/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(ADDRESS×ℤ))∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(ADDRESS×ℤ))∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> - <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#INITIALISATION\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#INITIALISATION\/inv11\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="53"> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> @@ -48,162 +48,162 @@ <org.eventb.core.poIdentifier name="subscriptions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="26"/> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="53"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="subscriptions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.guard#_yQ9vuL7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="transaction" org.eventb.core.type="TRANSACTIONS"/> <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="27"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vu77uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vvL7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="transaction" org.eventb.core.type="TRANSACTIONS"/> <org.eventb.core.poIdentifier name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwb7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwr7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyL7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM/grd12;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/grd12/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactionycross_chain_transactioq"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99b7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99b7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactionycross_chain_transactioq"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/inv11/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts{gateway_address ↦ accounts(gateway_address) − fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts{gateway_address ↦ accounts(gateway_address) − fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#SUBMIT_CC_TX_TO_ETHEREUM\/inv11\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM/act11;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_CC_TX_TO_ETHEREUM/act11/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9877uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9877uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.action#_XvhBAMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.action#_XvhBAMEBEe6yC4BToIaAqA"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="fee" org.eventb.core.type="ℤ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transactionycross_chain_transactioq" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="0"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99L7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transactionycross_chain_transactioq" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAcEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactionycross_chain_transactioq" org.eventb.core.poStamp="28"> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99b7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99r7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactionycross_chain_transactioq" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBA8EBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="CREATE_ADDRESS_IN_ETHEREUM/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="CREATE_ADDRESS_IN_ETHEREUM/inv11/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts∪{address ↦ 0}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts∪{address ↦ 0}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#CREATE_ADDRESS_IN_ETHEREUM\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#CREATE_ADDRESS_IN_ETHEREUM\/inv11\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.poStamp="28"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-r7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-77uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEsEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv11/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts{address ↦ accounts(address)+amount}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts{address ↦ accounts(address)+amount}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM\/inv11\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act1;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act1/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9_r7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9_r7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_XvhoE8EBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_XvhoE8EBEe6yC4BToIaAqA"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction{"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="28"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="amount" org.eventb.core.type="ℤ"/> <org.eventb.core.poIdentifier name="address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.poStamp="28"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9_77uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz-AL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFcEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd2;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|'"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="user_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Br7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Br7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="user_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|'"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd6;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd6/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|+"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cr7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|+"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv11/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction\|"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> - <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> + <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poSequent#SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM\/inv11\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/act1;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="28"> + <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/act1/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="54"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction\|"/> - <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_8rz-BL7uEe6laZimEYihUg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_8rz-BL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_XviPIMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_XviPIMEBEe6yC4BToIaAqA"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction\|"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="54"> <org.eventb.core.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.poIdentifier name="validator_fee" org.eventb.core.type="ℤ"/> <org.eventb.core.poIdentifier name="user_address" org.eventb.core.type="ADDRESS"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|'" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction\|" org.eventb.core.poStamp="0"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Bb7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|'" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction\|" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIcEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|+" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|'" org.eventb.core.poStamp="0"> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Br7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-B77uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-CL7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cb7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|+" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|'" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPI8EBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2McEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|+" org.eventb.core.poStamp="0"> - <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transaction\|+" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="54"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> </org.eventb.core.poFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpr b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpr index e86cc878d373dd54514df00e2b28de0b33e4e2d1..71498836aac039a33275917f3ac2c528119ebdb3 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpr +++ b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bpr @@ -75,7 +75,7 @@ <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ADDRESS×ℤ))∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ADDRESS×ℤ))∈ADDRESS ⇸ {1,2,3,4,5,6,7,8,9,10}"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> </org.eventb.core.prProof> @@ -1542,81 +1542,83 @@ <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> </org.eventb.core.prProof> - <org.eventb.core.prProof name="CREATE_ADDRESS_IN_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.prProof name="CREATE_ADDRESS_IN_ETHEREUM/inv11;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="" org.eventb.core.psManual="true"> <org.eventb.core.lang name="L"/> <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> <org.eventb.core.prAnte name="'"> - <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/> <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> <org.eventb.core.prAnte name="'"> - <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p5"/> - <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/> - <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/> - <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/> - <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p9"/> - <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/> - <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p11"/> - <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p12"/> - <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p13"/> - <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p14"/> - <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p4"> - <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> - </org.eventb.core.prRule> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p8"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p11"/> </org.eventb.core.prAnte> </org.eventb.core.prRule> </org.eventb.core.prAnte> </org.eventb.core.prRule> - <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> - <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> - <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/> - <org.eventb.core.prPred name="p11" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p14" org.eventb.core.predicate="address∈ADDRESS"/> - <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway∈GATEWAYS"> - <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> - <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS"> + <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬address∈dom(accounts)"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="address∉dom(accounts)"/> - <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"> - <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="address∈ADDRESS"> + <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS"> <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> - <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p6" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> - <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts∪{address ↦ 0}∈ADDRESS ⇸ ℕ"/> - <org.eventb.core.prPred name="p9" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> - <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> - <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> - <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬address∈dom(accounts)"> + <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway_address∈ADDRESS"> - <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∉dom(accounts)"> + <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="ℙ(ADDRESS)"/> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="initial_deposit>0"/> - <org.eventb.core.prPred name="p10" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> - <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> - <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p5" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> - <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> </org.eventb.core.prPred> - <org.eventb.core.prPred name="p3" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> - <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> </org.eventb.core.prProof> <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ADDRESS"> @@ -1704,9 +1706,9 @@ <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ {1,2,3,4,5,6,7,8,9,10}"/> <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> @@ -1714,11 +1716,11 @@ </org.eventb.core.prProof> <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd2;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> <org.eventb.core.lang name="L"/> - <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2"> <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> - <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/> </org.eventb.core.prAnte> </org.eventb.core.prRule> </org.eventb.core.prAnte> @@ -1726,10 +1728,10 @@ <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="accounts∈ADDRESS ⇸ {1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="user_address∈dom(accounts)"/> <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> @@ -2229,21 +2231,21 @@ </org.eventb.core.prProof> <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> <org.eventb.core.lang name="L"/> - <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2"> <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> - <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/> </org.eventb.core.prAnte> </org.eventb.core.prRule> </org.eventb.core.prAnte> </org.eventb.core.prRule> <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="accounts∈ADDRESS ⇸ {0,1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="address∈dom(accounts)"/> <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> @@ -2293,4 +2295,596 @@ <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/grd12;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="accounts∈ADDRESS ⇸ {1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p4,p6,p5,p7,p2,p8"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="fee" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="accounts∈ADDRESS ⇸ {1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway∈GATEWAYS"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee>0"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_address∈ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit>0"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="accounts(gateway_address)≥fee"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p17" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts{gateway_address ↦ accounts(gateway_address) − fee}∈ADDRESS ⇸ {1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="accounts(gateway_address) − fee∈{1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/grd14/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="INITIALISATION/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS"> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS"> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="initial_deposit>0"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ADDRESS×ℤ))∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/grd12/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p7,p3,p5,p4,p6,p1"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prIdent name="fee" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts{gateway_address ↦ accounts(gateway_address) − fee}∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="fee>0"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit>0"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts(gateway_address)≥fee"/> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p16" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_CC_TX_TO_ETHEREUM/act11/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="CREATE_ADDRESS_IN_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p5"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p4"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="address∈ADDRESS"/> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway∈GATEWAYS"> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="address∉dom(accounts)"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts∪{address ↦ 0}∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway_address∈ADDRESS"> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="initial_deposit>0"/> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'"> + <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/> + <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/> + <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/> + <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/> + <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p10"/> + <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/> + <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p12"/> + <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/> + <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p5,p3,p1,p4"> + <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p12" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway∈GATEWAYS"> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="accounts{address ↦ accounts(address)+amount}∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="ℙ(GATEWAYS)"/> + <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p7" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="ℙ(TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_address∈ADDRESS"> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit>0"/> + <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount>0"/> + <org.eventb.core.prPred name="p6" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"> + <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS)"/> + <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + </org.eventb.core.prPred> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd6/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0"/> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="transfer_amount" org.eventb.core.type="ℤ"/> + <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p5" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/grd14/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="accounts∈ADDRESS ⇸ {0,1,2,3,4,5,6,7,8,9,10}"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd7/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> + <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd8/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS"> + <org.eventb.core.lang name="L"/> + <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> + <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> + <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4"> + <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + </org.eventb.core.prAnte> + </org.eventb.core.prRule> + <org.eventb.core.prIdent name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/> + <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/> + <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/> + <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(accounts)"/> + <org.eventb.core.prPred name="p2" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ"/> + <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + </org.eventb.core.prProof> </org.eventb.core.prFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bps b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bps index f61994be8990f6733c610ee7133e09c8dc123337..53a6910bd45d8a113732f817600dc5166070af23 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bps +++ b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bps @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <org.eventb.core.psFile> - <org.eventb.core.psStatus name="INITIALISATION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="26" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM/grd12;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="CREATE_ADDRESS_IN_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd2;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd6;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="28" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/grd12/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_CC_TX_TO_ETHEREUM/act11/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="CREATE_ADDRESS_IN_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd6/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="54" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum index fd43b9bab533eca2d0c9929e014d9eb2be0d545a..8a66ae7807c2866f695a147f479787b3c87416f9 100644 --- a/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum +++ b/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum @@ -1,60 +1,60 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_iylW_8BGEe6yC4BToIaAqA" org.eventb.texttools.text_lastmodified="1706711971008" org.eventb.texttools.text_representation="machine CCTx_Fabric_Ethereum_m2 refines CCTx_Abstract_DLT_m1 sees CCTx_Fabric_Ethereum_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions accounts invariants @inv11; accounts ∈ ADDRESS ⇸ ℕ // The balance of each address must be equal or greater than zero (RQ4) events event INITIALISATION extends INITIALISATION then @act11; accounts ≔ ∅ end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS end event INITIATE_CC_TX_IN_FABRIC extends INITIATE_CC_TX end event TRIGGER_CC_TX_EVENT_IN_FABRIC extends TRIGGER_CC_TX_EVENT end event LISTEN_CC_TX_EVENT_IN_FABRIC extends LISTEN_CC_TX_EVENT end event SUBMIT_CC_TX_TO_ETHEREUM extends SUBMIT_CC_TX any fee where @grd11; gateway_address ∈ dom(accounts) @grd12; accounts(gateway_address) ≥ fee // The gateway has enough balance to pay the validators fee @grd13; fee > 0 then @act11; accounts(gateway_address) ≔ accounts(gateway_address) − fee // The fee is substracted from the gateways account (RQ5) end event CREATE_ADDRESS_IN_ETHEREUM // Users can create their address on Ethereum (RQ1 and RQ2) any address where @grd1; address ∈ ADDRESS @grd2; address ∉ dom(accounts) then @act1; accounts ≔ accounts ∪ {address ↦ 0} end event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM // Users (including the gateway) can deposit Ethers on their address (RQ3) any amount address where @grd1; amount > 0 @grd2; address ∈ dom(accounts) then @act1; accounts(address) ≔ accounts(address) + amount end event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM // The user can transfer an estimated fee to the gateways account (RQ1) any validator_fee user_address transfer_amount where @grd1; user_address ∈ dom(accounts) // The user has an account @grd2; accounts(user_address) ≥ validator_fee + transfer_amount // The user has enough balance to do the transfer and pay the validator's fee @grd3; validator_fee > 0 @grd4; transfer_amount > 0 @grd5; gateway_address ∈ dom(accounts) // The gateway has an account @grd6; ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ then @act1; accounts ≔ ({user_address, gateway_address} ⩤ accounts) ∪ {gateway_address ↦ accounts(gateway_address) + transfer_amount} ∪ {user_address ↦ accounts(user_address) − transfer_amount − validator_fee} // Substracts the transfer amount and fee from the user's account and add the transfer amount to the gateways account end end" version="5"> +<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_1wpAj8EDEe6yC4BToIaAqA" org.eventb.texttools.text_lastmodified="1706793273194" org.eventb.texttools.text_representation="machine CCTx_Fabric_Ethereum_m2 refines CCTx_Abstract_DLT_m1 sees CCTx_Fabric_Ethereum_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions accounts invariants @inv11 accounts ∈ ADDRESS ⇸ ℕ // The balance of each address must be equal or greater than zero (RQ4) events event INITIALISATION extends INITIALISATION then @act11 accounts ≔ ∅ end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS end event INITIATE_CC_TX_IN_FABRIC extends INITIATE_CC_TX end event TRIGGER_CC_TX_EVENT_IN_FABRIC extends TRIGGER_CC_TX_EVENT end event LISTEN_CC_TX_EVENT_IN_FABRIC extends LISTEN_CC_TX_EVENT end event SUBMIT_CC_TX_TO_ETHEREUM extends SUBMIT_CC_TX any fee where @grd11 gateway_address ∈ dom(accounts) @grd12 accounts(gateway_address) ≥ fee // The gateway has enough balance to pay the validators fee @grd13 fee > 0 then @act11 accounts(gateway_address) ≔ accounts(gateway_address) − fee // The fee is substracted from the gateways account (RQ5) end event CREATE_ADDRESS_IN_ETHEREUM // Users can create their address on Ethereum (RQ1 and RQ2) any address where @grd1 address ∈ ADDRESS @grd2 address ∉ dom(accounts) then @act1 accounts ≔ accounts ∪ {address ↦ 0} end event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM // Users (including the gateway) can deposit Ethers on their address (RQ3) any amount address where @grd1 amount > 0 @grd2 address ∈ dom(accounts) then @act1 accounts(address) ≔ accounts(address) + amount end event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM // The user can transfer an estimated fee to the gateways account (RQ1) any validator_fee user_address transfer_amount where @grd1 user_address ∈ dom(accounts) // The user has an account @grd2 accounts(user_address) ≥ validator_fee + transfer_amount // The user has enough balance to do the transfer and pay the validator's fee @grd3 validator_fee > 0 @grd4 transfer_amount > 0 @grd5 gateway_address ∈ dom(accounts) // The gateway has an account @grd6 ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ then @act1 accounts ≔ ({user_address, gateway_address} ⩤ accounts) ∪ {gateway_address ↦ accounts(gateway_address) + transfer_amount} ∪ {user_address ↦ accounts(user_address) − transfer_amount − validator_fee} // Substracts the transfer amount and fee from the user's account and add the transfer amount to the gateways account end end" version="5"> <org.eventb.core.refinesMachine name="'" org.eventb.core.target="CCTx_Abstract_DLT_m1"/> <org.eventb.core.seesContext name="_8rq0TL7uEe6laZimEYihUg" org.eventb.core.target="CCTx_Fabric_Ethereum_c2"/> - <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUh" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION" org.eventb.emf.persistence.emf_id="_iylW2MBGEe6yC4BToIaAqA"> - <org.eventb.core.action name="_8rq0Tb7uEe6laZimEYihUg" org.eventb.core.assignment="accounts ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_iylW18BGEe6yC4BToIaAqA"/> + <org.eventb.core.event name="_yREdbb7uEe6laZimEYihUh" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION" org.eventb.emf.persistence.emf_id="_1wpAaMEDEe6yC4BToIaAqA"> + <org.eventb.core.action name="_XvgZ8MEBEe6yC4BToIaAqA" org.eventb.core.assignment="accounts ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act11" org.eventb.emf.persistence.emf_id="_1wpAZ8EDEe6yC4BToIaAqA"/> </org.eventb.core.event> - <org.eventb.core.event name="_8rq0Tr7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.emf.persistence.emf_id="_iylW2sBGEe6yC4BToIaAqA"> + <org.eventb.core.event name="_8rq0Tr7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.emf.persistence.emf_id="_1wpAasEDEe6yC4BToIaAqA"> <org.eventb.core.refinesEvent name="_8rq0T77uEe6laZimEYihUg" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS"/> </org.eventb.core.event> - <org.eventb.core.event name="_2kWtoMBFEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CC_TX_IN_FABRIC" org.eventb.emf.persistence.emf_id="_iylW3MBGEe6yC4BToIaAqA"> + <org.eventb.core.event name="_2kWtoMBFEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CC_TX_IN_FABRIC" org.eventb.emf.persistence.emf_id="_1wpAbMEDEe6yC4BToIaAqA"> <org.eventb.core.refinesEvent name="_2kWtocBFEe6yC4BToIaAqA" org.eventb.core.target="INITIATE_CC_TX"/> </org.eventb.core.event> - <org.eventb.core.event name="_IXOSUMBGEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="TRIGGER_CC_TX_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_iylW3sBGEe6yC4BToIaAqA"> + <org.eventb.core.event name="_IXOSUMBGEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="TRIGGER_CC_TX_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_1wpAbsEDEe6yC4BToIaAqA"> <org.eventb.core.refinesEvent name="_IXOSUcBGEe6yC4BToIaAqA" org.eventb.core.target="TRIGGER_CC_TX_EVENT"/> </org.eventb.core.event> - <org.eventb.core.event name="_XiaDn8BGEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_CC_TX_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_iylW4MBGEe6yC4BToIaAqA"> + <org.eventb.core.event name="_XiaDn8BGEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_CC_TX_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_1wpAcMEDEe6yC4BToIaAqA"> <org.eventb.core.refinesEvent name="_XiaDoMBGEe6yC4BToIaAqA" org.eventb.core.target="LISTEN_CC_TX_EVENT"/> </org.eventb.core.event> - <org.eventb.core.event name="_i1LX0MBGEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CC_TX_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="_iylW58BGEe6yC4BToIaAqA"> + <org.eventb.core.event name="_i1LX0MBGEe6yC4BToIaAqA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CC_TX_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="_1wpAd8EDEe6yC4BToIaAqA"> <org.eventb.core.refinesEvent name="_i1L-4MBGEe6yC4BToIaAqA" org.eventb.core.target="SUBMIT_CC_TX"/> - <org.eventb.core.action name="_8rz9877uEe6laZimEYihUg" org.eventb.core.assignment="accounts(gateway_address) ≔ accounts(gateway_address) − fee" org.eventb.core.comment="The fee is substracted from the gateways account (RQ5)" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_iylW5sBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz99L7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd11;" org.eventb.core.predicate="gateway_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_iylW48BGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz99b7uEe6laZimEYihUg" org.eventb.core.comment="The gateway has enough balance to pay the validators fee" org.eventb.core.generated="false" org.eventb.core.label="grd12;" org.eventb.core.predicate="accounts(gateway_address) ≥ fee" org.eventb.emf.persistence.emf_id="_iylW5MBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz99r7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee > 0" org.eventb.emf.persistence.emf_id="_iylW5cBGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz9977uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="fee" org.eventb.emf.persistence.emf_id="_iylW4sBGEe6yC4BToIaAqA"/> - </org.eventb.core.event> - <org.eventb.core.event name="_8rz9-L7uEe6laZimEYihUg" org.eventb.core.comment="Users can create their address on Ethereum (RQ1 and RQ2)" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_iylW7cBGEe6yC4BToIaAqA"> - <org.eventb.core.action name="_8rz9-b7uEe6laZimEYihUg" org.eventb.core.assignment="accounts ≔ accounts ∪ {address ↦ 0}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_iylW7MBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz9-r7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_iylW6sBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz9-77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="address ∉ dom(accounts)" org.eventb.emf.persistence.emf_id="_iylW68BGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz9_L7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_iylW6cBGEe6yC4BToIaAqA"/> - </org.eventb.core.event> - <org.eventb.core.event name="_8rz9_b7uEe6laZimEYihUg" org.eventb.core.comment="Users (including the gateway) can deposit Ethers on their address (RQ3)" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_iylW88BGEe6yC4BToIaAqA"> - <org.eventb.core.action name="_8rz9_r7uEe6laZimEYihUg" org.eventb.core.assignment="accounts(address) ≔ accounts(address) + amount" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_iylW8sBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz9_77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount > 0" org.eventb.emf.persistence.emf_id="_iylW8MBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-AL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_iylW8cBGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz-Ab7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="amount" org.eventb.emf.persistence.emf_id="_iylW7sBGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz-Ar7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_iylW78BGEe6yC4BToIaAqA"/> - </org.eventb.core.event> - <org.eventb.core.event name="_8rz-A77uEe6laZimEYihUg" org.eventb.core.comment="The user can transfer an estimated fee to the gateways account (RQ1)" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_iylW_sBGEe6yC4BToIaAqA"> - <org.eventb.core.action name="_8rz-BL7uEe6laZimEYihUg" org.eventb.core.assignment="accounts ≔ ({user_address, gateway_address} ⩤ accounts) ∪ {gateway_address ↦ accounts(gateway_address) + transfer_amount} ∪ {user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.comment="Substracts the transfer amount and fee from the user's account and add the transfer amount to the gateways account" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_iylW_cBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-Bb7uEe6laZimEYihUg" org.eventb.core.comment="The user has an account" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_iylW98BGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-Br7uEe6laZimEYihUg" org.eventb.core.comment="The user has enough balance to do the transfer and pay the validator's fee" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="accounts(user_address) ≥ validator_fee + transfer_amount" org.eventb.emf.persistence.emf_id="_iylW-MBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-B77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="validator_fee > 0" org.eventb.emf.persistence.emf_id="_iylW-cBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-CL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd4;" org.eventb.core.predicate="transfer_amount > 0" org.eventb.emf.persistence.emf_id="_iylW-sBGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-Cb7uEe6laZimEYihUg" org.eventb.core.comment="The gateway has an account" org.eventb.core.generated="false" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_iylW-8BGEe6yC4BToIaAqA"/> - <org.eventb.core.guard name="_8rz-Cr7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd6;" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.emf.persistence.emf_id="_iylW_MBGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz-C77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="validator_fee" org.eventb.emf.persistence.emf_id="_iylW9MBGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz-DL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="user_address" org.eventb.emf.persistence.emf_id="_iylW9cBGEe6yC4BToIaAqA"/> - <org.eventb.core.parameter name="_8rz-Db7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="transfer_amount" org.eventb.emf.persistence.emf_id="_iylW9sBGEe6yC4BToIaAqA"/> - </org.eventb.core.event> - <org.eventb.core.invariant name="_8rz-Dr7uEe6laZimEYihUg" org.eventb.core.comment="The balance of each address must be equal or greater than zero (RQ4)" org.eventb.core.generated="false" org.eventb.core.label="inv11;" org.eventb.core.predicate="accounts ∈ ADDRESS ⇸ ℕ" org.eventb.emf.persistence.emf_id="_iylW1sBGEe6yC4BToIaAqA"/> - <org.eventb.core.variable name="_yREdab7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_iylW0MBGEe6yC4BToIaAqA"/> - <org.eventb.core.variable name="_yREdar7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_iylW0cBGEe6yC4BToIaAqA"/> - <org.eventb.core.variable name="_yREda77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_iylW0sBGEe6yC4BToIaAqA"/> - <org.eventb.core.variable name="_yREdbL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_iylW08BGEe6yC4BToIaAqA"/> - <org.eventb.core.variable name="_yREdbb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_iylW1MBGEe6yC4BToIaAqA"/> - <org.eventb.core.variable name="_8rz-D77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="accounts" org.eventb.emf.persistence.emf_id="_iylW1cBGEe6yC4BToIaAqA"/> + <org.eventb.core.action name="_XvhBAMEBEe6yC4BToIaAqA" org.eventb.core.assignment="accounts(gateway_address) ≔ accounts(gateway_address) − fee" org.eventb.core.comment="The fee is substracted from the gateways account (RQ5)" org.eventb.core.generated="false" org.eventb.core.label="act11" org.eventb.emf.persistence.emf_id="_1wpAdsEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhBAcEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd11" org.eventb.core.predicate="gateway_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_1wpAc8EDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhBAsEBEe6yC4BToIaAqA" org.eventb.core.comment="The gateway has enough balance to pay the validators fee" org.eventb.core.generated="false" org.eventb.core.label="grd12" org.eventb.core.predicate="accounts(gateway_address) ≥ fee" org.eventb.emf.persistence.emf_id="_1wpAdMEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhBA8EBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd13" org.eventb.core.predicate="fee > 0" org.eventb.emf.persistence.emf_id="_1wpAdcEDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz9977uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="fee" org.eventb.emf.persistence.emf_id="_1wpAcsEDEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_8rz9-L7uEe6laZimEYihUg" org.eventb.core.comment="Users can create their address on Ethereum (RQ1 and RQ2)" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_1wpAfcEDEe6yC4BToIaAqA"> + <org.eventb.core.action name="_XvhoEMEBEe6yC4BToIaAqA" org.eventb.core.assignment="accounts ≔ accounts ∪ {address ↦ 0}" org.eventb.core.generated="false" org.eventb.core.label="act1" org.eventb.emf.persistence.emf_id="_1wpAfMEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhoEcEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd1" org.eventb.core.predicate="address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_1wpAesEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhoEsEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd2" org.eventb.core.predicate="address ∉ dom(accounts)" org.eventb.emf.persistence.emf_id="_1wpAe8EDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz9_L7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_1wpAecEDEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_8rz9_b7uEe6laZimEYihUg" org.eventb.core.comment="Users (including the gateway) can deposit Ethers on their address (RQ3)" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_1wpAg8EDEe6yC4BToIaAqA"> + <org.eventb.core.action name="_XvhoE8EBEe6yC4BToIaAqA" org.eventb.core.assignment="accounts(address) ≔ accounts(address) + amount" org.eventb.core.generated="false" org.eventb.core.label="act1" org.eventb.emf.persistence.emf_id="_1wpAgsEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhoFMEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd1" org.eventb.core.predicate="amount > 0" org.eventb.emf.persistence.emf_id="_1wpAgMEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XvhoFcEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd2" org.eventb.core.predicate="address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_1wpAgcEDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz-Ab7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="amount" org.eventb.emf.persistence.emf_id="_1wpAfsEDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz-Ar7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_1wpAf8EDEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_8rz-A77uEe6laZimEYihUg" org.eventb.core.comment="The user can transfer an estimated fee to the gateways account (RQ1)" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_1wpAjsEDEe6yC4BToIaAqA"> + <org.eventb.core.action name="_XviPIMEBEe6yC4BToIaAqA" org.eventb.core.assignment="accounts ≔ ({user_address, gateway_address} ⩤ accounts) ∪ {gateway_address ↦ accounts(gateway_address) + transfer_amount} ∪ {user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.comment="Substracts the transfer amount and fee from the user's account and add the transfer amount to the gateways account" org.eventb.core.generated="false" org.eventb.core.label="act1" org.eventb.emf.persistence.emf_id="_1wpAjcEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XviPIcEBEe6yC4BToIaAqA" org.eventb.core.comment="The user has an account" org.eventb.core.generated="false" org.eventb.core.label="grd1" org.eventb.core.predicate="user_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_1wpAh8EDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XviPIsEBEe6yC4BToIaAqA" org.eventb.core.comment="The user has enough balance to do the transfer and pay the validator's fee" org.eventb.core.generated="false" org.eventb.core.label="grd2" org.eventb.core.predicate="accounts(user_address) ≥ validator_fee + transfer_amount" org.eventb.emf.persistence.emf_id="_1wpAiMEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_XviPI8EBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd3" org.eventb.core.predicate="validator_fee > 0" org.eventb.emf.persistence.emf_id="_1wpAicEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_Xvi2MMEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd4" org.eventb.core.predicate="transfer_amount > 0" org.eventb.emf.persistence.emf_id="_1wpAisEDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_Xvi2McEBEe6yC4BToIaAqA" org.eventb.core.comment="The gateway has an account" org.eventb.core.generated="false" org.eventb.core.label="grd5" org.eventb.core.predicate="gateway_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_1wpAi8EDEe6yC4BToIaAqA"/> + <org.eventb.core.guard name="_Xvi2MsEBEe6yC4BToIaAqA" org.eventb.core.generated="false" org.eventb.core.label="grd6" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.emf.persistence.emf_id="_1wpAjMEDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz-C77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="validator_fee" org.eventb.emf.persistence.emf_id="_1wpAhMEDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz-DL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="user_address" org.eventb.emf.persistence.emf_id="_1wpAhcEDEe6yC4BToIaAqA"/> + <org.eventb.core.parameter name="_8rz-Db7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="transfer_amount" org.eventb.emf.persistence.emf_id="_1wpAhsEDEe6yC4BToIaAqA"/> + </org.eventb.core.event> + <org.eventb.core.invariant name="_XvjdQMEBEe6yC4BToIaAqA" org.eventb.core.comment="The balance of each address must be equal or greater than zero (RQ4)" org.eventb.core.generated="false" org.eventb.core.label="inv11" org.eventb.core.predicate="accounts ∈ ADDRESS ⇸ ℕ" org.eventb.emf.persistence.emf_id="_1wpAZsEDEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdab7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_1wpAYMEDEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdar7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_1wpAYcEDEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREda77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_1wpAYsEDEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdbL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_1wpAY8EDEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_yREdbb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_1wpAZMEDEe6yC4BToIaAqA"/> + <org.eventb.core.variable name="_8rz-D77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="accounts" org.eventb.emf.persistence.emf_id="_1wpAZcEDEe6yC4BToIaAqA"/> </org.eventb.core.machineFile> diff --git a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bcm b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bcm index 2149f219f5a5766772a8bf1fe488669353a329ce..b875052e988b0cb88b2a4779af5a0b70abec1bf3 100644 --- a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bcm +++ b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bcm @@ -28,7 +28,7 @@ <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c5" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZ77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c6" org.eventb.core.label="inv6;" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdaL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c4" org.eventb.core.label="inv31;" org.eventb.core.predicate="estimated_cross_chain_cost∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_BvYlxr7vEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scVariable name="triggered_events" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_yREdar7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.scVariable name="accounts" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_8rz-D77uEe6laZimEYihUg" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> @@ -37,72 +37,82 @@ <org.eventb.core.scVariable name="gateway_pending_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_yREdbL7uEe6laZimEYihUg" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.scVariable name="estimated_cross_chain_cost" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_BvYlyr7vEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_yREdab7uEe6laZimEYihUg" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> - <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.refinesEvent#'"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11;" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99L7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99b7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactios" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99r7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="accounts ≔ accounts{gateway_address ↦ accounts(gateway_address) − fee}" org.eventb.core.label="act11;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9877uEe6laZimEYihUg"/> - <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> - <org.eventb.core.scParameter name="fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz9977uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> - <org.eventb.core.scGuard name="cross_chain_transactiou" org.eventb.core.label="grd31;" org.eventb.core.predicate="fee≤estimated_cross_chain_cost" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.guard#_BvYlyL7vEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_CC_TX_EVENT_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_ZAfKoMBGEe6yC4BToIaAqA"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionx" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_ZAfKoMBGEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_ZAfKocBGEe6yC4BToIaAqA"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vxr7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vx77uEe6laZimEYihUg"/> + <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vy77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vzL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + </org.eventb.core.scEvent> + <org.eventb.core.scEvent name="received_cross_chain_transactionu" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CC_TX_TO_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_j630sMBGEe6yC4BToIaAqA"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_j630sMBGEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_j630scBGEe6yC4BToIaAqA"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="cross_chain_transactios" org.eventb.core.label="grd13" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBA8EBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYL7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.action#_yREdYb7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="accounts ≔ accounts{gateway_address ↦ accounts(gateway_address) − fee}" org.eventb.core.label="act11" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.action#_XvhBAMEBEe6yC4BToIaAqA"/> + <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yREdY77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.scParameter name="fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_8rz9977uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> + <org.eventb.core.scGuard name="cross_chain_transactiou" org.eventb.core.label="grd31;" org.eventb.core.predicate="fee≤estimated_cross_chain_cost" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_j630sMBGEe6yC4BToIaAqA|org.eventb.core.guard#_BvYlyL7vEe6laZimEYihUg" org.eventb.core.theorem="false"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactionu" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn"> + <org.eventb.core.scEvent name="received_cross_chain_transactionv" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionz" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUn|org.eventb.core.refinesEvent#'"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-r7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts∪{address ↦ 0}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.action#_8rz9-b7uEe6laZimEYihUg"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts∪{address ↦ 0}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.action#_XvhoEMEBEe6yC4BToIaAqA"/> <org.eventb.core.scParameter name="address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz9_L7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactionv" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo"> + <org.eventb.core.scEvent name="received_cross_chain_transactionw" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transaction{" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.refinesEvent#'"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9_77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz-AL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts{address ↦ accounts(address)+amount}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_8rz9_r7uEe6laZimEYihUg"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts{address ↦ accounts(address)+amount}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.action#_XvhoE8EBEe6yC4BToIaAqA"/> <org.eventb.core.scParameter name="amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Ab7uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scParameter name="address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Ar7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> <org.eventb.core.scGuard name="addresu" org.eventb.core.label="grd31;" org.eventb.core.predicate="address≠gateway_address" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.guard#_BvYlyb7vEe6laZimEYihUg" org.eventb.core.theorem="false"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactionw" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp"> + <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transaction\|" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp|org.eventb.core.refinesEvent#'"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Bb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Br7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-B77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4;" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-CL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="," org.eventb.core.label="grd6;" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="accounts ≔ ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_8rz-BL7uEe6laZimEYihUg"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIcEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPI8EBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MMEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2McEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scGuard name="," org.eventb.core.label="grd6" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA" org.eventb.core.theorem="false"/> + <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="accounts ≔ ({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.action#_XviPIMEBEe6yC4BToIaAqA"/> <org.eventb.core.scParameter name="user_address" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-DL7uEe6laZimEYihUg" org.eventb.core.type="ADDRESS"/> <org.eventb.core.scParameter name="validator_fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-C77uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scParameter name="transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.parameter#_8rz-Db7uEe6laZimEYihUg" org.eventb.core.type="ℤ"/> <org.eventb.core.scAction name="transfer_amounv" org.eventb.core.assignment="estimated_cross_chain_cost ≔ transfer_amount" org.eventb.core.label="act31;" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp|org.eventb.core.action#_BvYlx77vEe6laZimEYihUg"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"> + <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactiont" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> <org.eventb.core.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vsb7uEe6laZimEYihUg"/> <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vsr7uEe6laZimEYihUg"/> <org.eventb.core.scAction name=")" org.eventb.core.assignment="subscriptions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)" org.eventb.core.label="act3;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vs77uEe6laZimEYihUg"/> <org.eventb.core.scAction name="*" org.eventb.core.assignment="gateway_pending_transactions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)" org.eventb.core.label="act4;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vtL7uEe6laZimEYihUg"/> <org.eventb.core.scAction name="+" org.eventb.core.assignment="received_cross_chain_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)" org.eventb.core.label="act6;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_yQ9vtb7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11;" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_8rq0Tb7uEe6laZimEYihUg"/> + <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_XvgZ8MEBEe6yC4BToIaAqA"/> <org.eventb.core.scAction name="-" org.eventb.core.assignment="estimated_cross_chain_cost ≔ 0" org.eventb.core.label="act31;" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh|org.eventb.core.action#_BvYlxb7vEe6laZimEYihUg"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi"> + <org.eventb.core.scEvent name="received_cross_chain_transactionz" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionu" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUi|org.eventb.core.refinesEvent#'"/> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.guard#_yQ9vuL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scAction name="(" org.eventb.core.assignment="subscriptions ≔ subscriptions∪{gateway ↦ source_smart_contract}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.action#_yQ9vt77uEe6laZimEYihUg"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transactionz" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIATE_CC_TX_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_4AD2oMBFEe6yC4BToIaAqA"> + <org.eventb.core.scEvent name="received_cross_chain_transaction{" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIATE_CC_TX_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_4AD2oMBFEe6yC4BToIaAqA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_4AD2oMBFEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_4AD2ocBFEe6yC4BToIaAqA"/> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vu77uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scGuard name="(" org.eventb.core.label="grd3;" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vvL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scAction name="transactioo" org.eventb.core.assignment="received_transactions ≔ received_transactions∪{source_smart_contract ↦ transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vur7uEe6laZimEYihUg"/> <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vvb7uEe6laZimEYihUg" org.eventb.core.type="TRANSACTIONS"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transaction{" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="TRIGGER_CC_TX_EVENT_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_Jp9FgMBGEe6yC4BToIaAqA"> + <org.eventb.core.scEvent name="received_cross_chain_transaction|" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="TRIGGER_CC_TX_EVENT_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_Jp9FgMBGEe6yC4BToIaAqA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionw" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_Jp9FgMBGEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_Jp9FgcBGEe6yC4BToIaAqA"/> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> @@ -111,14 +121,4 @@ <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vxL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vw77uEe6laZimEYihUg" org.eventb.core.type="TRANSACTIONS"/> </org.eventb.core.scEvent> - <org.eventb.core.scEvent name="received_cross_chain_transaction|" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_CC_TX_EVENT_IN_FABRIC" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_ZAfKoMBGEe6yC4BToIaAqA"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bcm|org.eventb.core.scMachineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.scEvent#received_cross_chain_transactionx" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_ZAfKoMBGEe6yC4BToIaAqA|org.eventb.core.refinesEvent#_ZAfKocBGEe6yC4BToIaAqA"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyL7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vxr7uEe6laZimEYihUg"/> - <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.action#_yQ9vx77uEe6laZimEYihUg"/> - <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vy77uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> - <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.parameter#_yQ9vzL7uEe6laZimEYihUg" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> - </org.eventb.core.scEvent> </org.eventb.core.scMachineFile> diff --git a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo index 678d6a99b621faf083a27d9a42dbf20ac5f5d4ff..5f7bd71ac8146e30dba6c9b36fc6d15aca2b01e3 100644 --- a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo +++ b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.poFile org.eventb.core.poStamp="26"> +<org.eventb.core.poFile org.eventb.core.poStamp="52"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="24"> <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="ℙ(CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="ℙ(CROSS_CHAIN_TRANSACTIONS)"/> @@ -18,7 +18,7 @@ <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgL7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTX" org.eventb.core.predicate="initial_deposit>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_seJcgb7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="24"> + <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="accounts" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.poIdentifier name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -31,28 +31,53 @@ <org.eventb.core.poPredicate name="received_cross_chain_transactionv" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZr7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="received_cross_chain_transactionw" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdZ77uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="received_cross_chain_transactionx" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_yREdaL7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="received_cross_chain_transactiony" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_8rz-Dr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactiony" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_XvjdQMEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> + <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="52"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyb7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_THog4MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vyr7uEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> + <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> + <org.eventb.core.poIdentifier name="fee" org.eventb.core.type="ℤ"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="52"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_fwqd8MBGEe6yC4BToIaAqA|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBAsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_i1LX0MBGEe6yC4BToIaAqA|org.eventb.core.guard#_XvhBA8EBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="fee≤estimated_cross_chain_cost" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_j630sMBGEe6yC4BToIaAqA|org.eventb.core.guard#_BvYlyL7vEe6laZimEYihUg"/> + </org.eventb.core.poPredicateSet> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-r7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9-77uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="52"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9-L7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoEsEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="amount" org.eventb.core.type="ℤ"/> <org.eventb.core.poIdentifier name="address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz9_77uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz-AL7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="52"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz9_b7uEe6laZimEYihUg|org.eventb.core.guard#_XvhoFcEBEe6yC4BToIaAqA"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="address≠gateway_address" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUo|org.eventb.core.guard#_BvYlyb7vEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv31;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionv"/> + <org.eventb.core.poSequent name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv31;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant preservation" org.eventb.core.poStamp="52"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionx"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="transfer_amount∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_BvYlxr7vEe6laZimEYihUg"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUp"/> @@ -60,23 +85,23 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poSequent#SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM\/inv31;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.poIdentifier name="validator_fee" org.eventb.core.type="ℤ"/> <org.eventb.core.poIdentifier name="user_address" org.eventb.core.type="ADDRESS"/> <org.eventb.core.poIdentifier name="estimated_cross_chain_cost'" org.eventb.core.type="ℤ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Bb7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Br7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-B77uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-CL7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cb7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_8rz-Cr7uEe6laZimEYihUg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="52"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIcEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPIsEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_XviPI8EBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MMEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2McEBEe6yC4BToIaAqA"/> + <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ accounts)∪{gateway_address ↦ accounts(gateway_address)+transfer_amount}∪{user_address ↦ accounts(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz-A77uEe6laZimEYihUg|org.eventb.core.guard#_Xvi2MsEBEe6yC4BToIaAqA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="INITIALISATION/inv31;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionw"/> + <org.eventb.core.poSequent name="INITIALISATION/inv31;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="51"> + <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiony"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_BvYlxr7vEe6laZimEYihUg"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUh"/> @@ -84,7 +109,7 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poSequent#INITIALISATION\/inv31;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/> </org.eventb.core.poSequent> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="51"> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> @@ -93,46 +118,32 @@ <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="estimated_cross_chain_cost'" org.eventb.core.type="ℤ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="26"/> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="51"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="subscriptions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.poStamp="52"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vtr7uEe6laZimEYihUg|org.eventb.core.guard#_yQ9vuL7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="transaction" org.eventb.core.type="TRANSACTIONS"/> <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.poStamp="52"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vu77uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_y397cMBFEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vvL7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> <org.eventb.core.poIdentifier name="transaction" org.eventb.core.type="TRANSACTIONS"/> <org.eventb.core.poIdentifier name="cross_chain_event" org.eventb.core.type="CROSS_CHAIN_EVENTS"/> <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.poStamp="26"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction\|" org.eventb.core.poStamp="52"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwb7uEe6laZimEYihUg"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_E_KKUMBGEe6yC4BToIaAqA|org.eventb.core.guard#_yQ9vwr7uEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="26"> - <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> - <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> - <org.eventb.core.poIdentifier name="accounts'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> - <org.eventb.core.poIdentifier name="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/> - <org.eventb.core.poIdentifier name="fee" org.eventb.core.type="ℤ"/> - </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.poStamp="26"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/gateway-event-b/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_yQ9vzb7uEe6laZimEYihUg|org.eventb.core.guard#_yREdYr7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99L7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99b7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/gateway-event-b/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_8rz98b7uEe6laZimEYihUg|org.eventb.core.guard#_8rz99r7uEe6laZimEYihUg"/> - <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="fee≤estimated_cross_chain_cost" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_yREdbb7uEe6laZimEYihUm|org.eventb.core.guard#_BvYlyL7vEe6laZimEYihUg"/> - </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="24"> + <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="52"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="estimated_cross_chain_cost∈ℕ" org.eventb.core.source="/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_BvYlxr7vEe6laZimEYihUg"/> </org.eventb.core.poPredicateSet> </org.eventb.core.poFile> diff --git a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo_tmp b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo_tmp deleted file mode 100644 index 1daa70d8814e39ef405b0dcd5b6599163524d97c..0000000000000000000000000000000000000000 --- a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bpo_tmp +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<org.eventb.core.poFile/> \ No newline at end of file diff --git a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bps b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bps index 19e5768f39f23241dfef617310a8516d60600678..1ee764f35f00f05a3b367f1dc49378eb8eabaf68 100644 --- a/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bps +++ b/gateway-event-b/CCTx_Preserve_Balance_Gateway_m3.bps @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <org.eventb.core.psFile> - <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="26" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="INITIALISATION/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="26" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="52" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="51" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/gateway-prob-animation/gateway-event-b-animation.svg b/gateway-prob-animation/abstract-machine/gateway-event-b-animation.svg similarity index 100% rename from gateway-prob-animation/gateway-event-b-animation.svg rename to gateway-prob-animation/abstract-machine/gateway-event-b-animation.svg diff --git a/gateway-prob-animation/gateway-history.html b/gateway-prob-animation/abstract-machine/gateway-history.html similarity index 100% rename from gateway-prob-animation/gateway-history.html rename to gateway-prob-animation/abstract-machine/gateway-history.html diff --git a/gateway-prob-animation/gateway-vis-file.json b/gateway-prob-animation/abstract-machine/gateway-vis-file.json similarity index 100% rename from gateway-prob-animation/gateway-vis-file.json rename to gateway-prob-animation/abstract-machine/gateway-vis-file.json diff --git a/gateway-prob-animation/fabric-ethereum/gateway-event-b-fabric-ethereum-animation.svg b/gateway-prob-animation/fabric-ethereum/gateway-event-b-fabric-ethereum-animation.svg new file mode 100644 index 0000000000000000000000000000000000000000..1f1d4540e67d8947ce0509e4316410ccf18320fc --- /dev/null +++ b/gateway-prob-animation/fabric-ethereum/gateway-event-b-fabric-ethereum-animation.svg @@ -0,0 +1,421 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Do not edit this file with editors other than draw.io --> + +<svg + version="1.1" + width="337px" + height="207px" + viewBox="-0.5 -0.5 337 207" + content="<mxfile host="app.diagrams.net" modified="2024-02-01T12:44:54.736Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" etag="gSZ7F6c2sctu4ZcFQVgl" version="23.0.2" type="google" pages="6" scale="1" border="0"> <diagram name="gateway-solution" id="IxfVzK6chv7lJw_EbnZr"> <mxGraphModel dx="794" dy="412" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="c-U9safHB3ttp2hsg-zf-6" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="180" y="220" width="330" height="150" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="c-U9safHB3ttp2hsg-zf-1" target="c-U9safHB3ttp2hsg-zf-3" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-1" value="Source blockchain" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="188" y="380" width="100" height="50" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-2" value="Target blockchain" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="395" y="380" width="100" height="50" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-3" value="Source connector" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="188" y="300" width="100" height="50" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-4" value="Target connector" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="400" y="300" width="100" height="50" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="c-U9safHB3ttp2hsg-zf-5" target="c-U9safHB3ttp2hsg-zf-4" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-5" value="Router" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="295" y="250" width="100" height="50" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-7" value="Gateway" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" parent="1" vertex="1"> <mxGeometry x="170" y="220" width="350" height="30" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=15;entryPerimeter=0;" parent="1" source="c-U9safHB3ttp2hsg-zf-3" target="c-U9safHB3ttp2hsg-zf-5" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="c-U9safHB3ttp2hsg-zf-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.59;entryY=0.06;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="c-U9safHB3ttp2hsg-zf-4" target="c-U9safHB3ttp2hsg-zf-2" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> <diagram name="abstract-specification" id="-QJY6oymtGVpWPObD_cF"> <mxGraphModel dx="794" dy="412" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="EoR6y-X5EmPLE4C7FN8b-0" /> <mxCell id="EoR6y-X5EmPLE4C7FN8b-1" parent="EoR6y-X5EmPLE4C7FN8b-0" /> <mxCell id="EoR6y-X5EmPLE4C7FN8b-3" value="3. trigger cc-tx event" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="EoR6y-X5EmPLE4C7FN8b-1" source="JDs1YQqlEzECSltLOP-f-1" target="JDs1YQqlEzECSltLOP-f-3" edge="1"> <mxGeometry x="-0.3333" y="15" relative="1" as="geometry"> <mxPoint x="330" y="355" as="targetPoint" /> <mxPoint as="offset" /> <mxPoint x="265" y="380" as="sourcePoint" /> </mxGeometry> </mxCell> <mxCell id="TJc7Q5ErO2HgT6tBkr5N-0" value="1. Subscribe" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="EoR6y-X5EmPLE4C7FN8b-1" source="JDs1YQqlEzECSltLOP-f-3" target="JDs1YQqlEzECSltLOP-f-1" edge="1"> <mxGeometry x="-0.2" y="15" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="375" y="370" as="sourcePoint" /> <mxPoint x="310" y="405" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="EoR6y-X5EmPLE4C7FN8b-12" value="4. submit cc-tx" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=none;" parent="EoR6y-X5EmPLE4C7FN8b-1" source="JDs1YQqlEzECSltLOP-f-3" target="JDs1YQqlEzECSltLOP-f-2" edge="1"> <mxGeometry x="0.0142" y="18" relative="1" as="geometry"> <mxPoint y="1" as="offset" /> <mxPoint x="420" y="357.5" as="sourcePoint" /> <mxPoint x="483.0999999999999" y="383" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="TJc7Q5ErO2HgT6tBkr5N-2" value="2. initiate cc-tx" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="EoR6y-X5EmPLE4C7FN8b-1" source="TJc7Q5ErO2HgT6tBkr5N-1" target="JDs1YQqlEzECSltLOP-f-1" edge="1"> <mxGeometry x="-0.0476" y="-10" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="265" y="430" as="targetPoint" /> <Array as="points"> <mxPoint x="205" y="450" /> <mxPoint x="270" y="450" /> </Array> </mxGeometry> </mxCell> <mxCell id="TJc7Q5ErO2HgT6tBkr5N-1" value="User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;labelBackgroundColor=default;" parent="EoR6y-X5EmPLE4C7FN8b-1" vertex="1"> <mxGeometry x="190" y="340" width="30" height="60" as="geometry" /> </mxCell> <mxCell id="JDs1YQqlEzECSltLOP-f-1" value="Source smart contract" style="rounded=1;whiteSpace=wrap;html=1;" parent="EoR6y-X5EmPLE4C7FN8b-1" vertex="1"> <mxGeometry x="230" y="380" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="JDs1YQqlEzECSltLOP-f-2" value="Target smart contract" style="rounded=1;whiteSpace=wrap;html=1;" parent="EoR6y-X5EmPLE4C7FN8b-1" vertex="1"> <mxGeometry x="440" y="380" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="JDs1YQqlEzECSltLOP-f-3" value="Gateway" style="rounded=1;whiteSpace=wrap;html=1;" parent="EoR6y-X5EmPLE4C7FN8b-1" vertex="1"> <mxGeometry x="340" y="333" width="80" height="50" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> <diagram name="abstract-animation" id="fuSdiZRc7RcFF8zck2q4"> <mxGraphModel dx="1434" dy="772" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="Ni0NketW2BAV2I28kZGi-0" /> <mxCell id="Ni0NketW2BAV2I28kZGi-1" parent="Ni0NketW2BAV2I28kZGi-0" /> <mxCell id="Ni0NketW2BAV2I28kZGi-2" value="3. trigger cc-tx event" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="Ni0NketW2BAV2I28kZGi-1" source="Ni0NketW2BAV2I28kZGi-7" target="Ni0NketW2BAV2I28kZGi-9"> <mxGeometry x="-0.3333" y="15" relative="1" as="geometry"> <mxPoint x="330" y="355" as="targetPoint" /> <mxPoint as="offset" /> <mxPoint x="265" y="380" as="sourcePoint" /> </mxGeometry> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-3" value="1. Subscribe" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="Ni0NketW2BAV2I28kZGi-1" source="Ni0NketW2BAV2I28kZGi-9" target="Ni0NketW2BAV2I28kZGi-7"> <mxGeometry x="-0.2" y="15" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="375" y="370" as="sourcePoint" /> <mxPoint x="310" y="405" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-4" value="4. submit cc-tx" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=none;" edge="1" parent="Ni0NketW2BAV2I28kZGi-1" source="Ni0NketW2BAV2I28kZGi-9" target="Ni0NketW2BAV2I28kZGi-8"> <mxGeometry x="0.0142" y="18" relative="1" as="geometry"> <mxPoint y="1" as="offset" /> <mxPoint x="420" y="357.5" as="sourcePoint" /> <mxPoint x="483.0999999999999" y="383" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-5" value="2. initiate cc-tx" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="Ni0NketW2BAV2I28kZGi-1" source="Ni0NketW2BAV2I28kZGi-6" target="Ni0NketW2BAV2I28kZGi-7"> <mxGeometry x="-0.0476" y="-10" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="265" y="430" as="targetPoint" /> <Array as="points"> <mxPoint x="205" y="450" /> <mxPoint x="270" y="450" /> </Array> </mxGeometry> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-6" value="User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;labelBackgroundColor=default;" vertex="1" parent="Ni0NketW2BAV2I28kZGi-1"> <mxGeometry x="190" y="340" width="30" height="60" as="geometry" /> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-7" value="Source smart contract" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="Ni0NketW2BAV2I28kZGi-1"> <mxGeometry x="230" y="380" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-8" value="Target smart contract" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="Ni0NketW2BAV2I28kZGi-1"> <mxGeometry x="440" y="380" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="Ni0NketW2BAV2I28kZGi-9" value="Gateway" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="Ni0NketW2BAV2I28kZGi-1"> <mxGeometry x="340" y="333" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="LVfMiaI1IPe-Tqw3IRDa-1" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;" vertex="1" parent="Ni0NketW2BAV2I28kZGi-1"> <mxGeometry x="330" y="300" width="100" height="20" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> <diagram name="fabric-ethereum-animation" id="qFPzXrBYEuxDntpSMbV6"> <mxGraphModel dx="1434" dy="772" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="01pgN8GewFdfEfVDNItF-0" /> <mxCell id="01pgN8GewFdfEfVDNItF-1" parent="01pgN8GewFdfEfVDNItF-0" /> <mxCell id="01pgN8GewFdfEfVDNItF-2" value="3. trigger cc-tx event" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="01pgN8GewFdfEfVDNItF-1" source="01pgN8GewFdfEfVDNItF-7" target="01pgN8GewFdfEfVDNItF-9"> <mxGeometry x="-0.3333" y="15" relative="1" as="geometry"> <mxPoint x="330" y="355" as="targetPoint" /> <mxPoint as="offset" /> <mxPoint x="265" y="380" as="sourcePoint" /> </mxGeometry> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-3" value="1. Subscribe" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="01pgN8GewFdfEfVDNItF-1" source="01pgN8GewFdfEfVDNItF-9" target="01pgN8GewFdfEfVDNItF-7"> <mxGeometry x="-0.2" y="15" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="375" y="370" as="sourcePoint" /> <mxPoint x="310" y="405" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-4" value="4. submit cc-tx" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=none;" edge="1" parent="01pgN8GewFdfEfVDNItF-1" source="01pgN8GewFdfEfVDNItF-9" target="01pgN8GewFdfEfVDNItF-8"> <mxGeometry x="0.0142" y="18" relative="1" as="geometry"> <mxPoint y="1" as="offset" /> <mxPoint x="420" y="357.5" as="sourcePoint" /> <mxPoint x="483.0999999999999" y="383" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-5" value="2. initiate cc-tx" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="01pgN8GewFdfEfVDNItF-1" source="01pgN8GewFdfEfVDNItF-6" target="01pgN8GewFdfEfVDNItF-7"> <mxGeometry x="-0.0476" y="-10" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="265" y="430" as="targetPoint" /> <Array as="points"> <mxPoint x="205" y="450" /> <mxPoint x="270" y="450" /> </Array> </mxGeometry> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-6" value="User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;labelBackgroundColor=default;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="190" y="340" width="30" height="60" as="geometry" /> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-7" value="Source smart contract" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="230" y="380" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-8" value="Target smart contract" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="440" y="380" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-9" value="Gateway" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="340" y="333" width="80" height="50" as="geometry" /> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-10" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="330" y="300" width="100" height="20" as="geometry" /> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-11" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="346" y="260" width="32" height="32" as="geometry" /> </mxCell> <mxCell id="01pgN8GewFdfEfVDNItF-12" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="01pgN8GewFdfEfVDNItF-1"> <mxGeometry x="386" y="262" width="28" height="28" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> <diagram id="T7Ew8g7FgAYmE6fumc95" name="specification-layers"> <mxGraphModel dx="794" dy="412" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="ls7eoqOi9B50MHgQH9Si-1" value="One way cross-chain transaction &lt;br&gt;abstract specification" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="260" y="260" width="250" height="60" as="geometry" /> </mxCell> <mxCell id="ls7eoqOi9B50MHgQH9Si-2" value="Ethereum -&amp;gt; Fabric specification" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="390" y="330" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="ls7eoqOi9B50MHgQH9Si-3" value="Fabric -&amp;gt; Ethereum specification" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="260" y="330" width="120" height="60" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> <diagram id="rLaGeFibsiL8HTMZMKSm" name="use-case-scenario"> <mxGraphModel dx="794" dy="412" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="Krg6Kf3u61ibPq_FTrr5-17" value="Ethereum" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="340" y="220" width="100" height="340" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-18" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="Krg6Kf3u61ibPq_FTrr5-17" vertex="1"> <mxGeometry x="45" y="70" width="10" height="30" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-19" value="transfer(userAccount, amount, gwAccount)" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="Krg6Kf3u61ibPq_FTrr5-17" source="Krg6Kf3u61ibPq_FTrr5-18" target="Krg6Kf3u61ibPq_FTrr5-18" edge="1"> <mxGeometry x="-0.7931" y="15" relative="1" as="geometry"> <mxPoint x="-115" y="160" as="sourcePoint" /> <Array as="points"> <mxPoint x="120" y="85" /> <mxPoint x="120" y="100" /> </Array> <mxPoint as="offset" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-20" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="Krg6Kf3u61ibPq_FTrr5-17" vertex="1"> <mxGeometry x="45" y="170" width="10" height="80" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-21" value="transfer(scAccount, amount, targetAccount)" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="Krg6Kf3u61ibPq_FTrr5-17" source="Krg6Kf3u61ibPq_FTrr5-20" target="Krg6Kf3u61ibPq_FTrr5-20" edge="1"> <mxGeometry x="-0.8126" y="10" relative="1" as="geometry"> <mxPoint x="-105" y="360" as="sourcePoint" /> <Array as="points"> <mxPoint x="120" y="220" /> <mxPoint x="120" y="240" /> </Array> <mxPoint as="offset" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-7" value="" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};participant=umlActor;" parent="1" vertex="1"> <mxGeometry x="170" y="220" width="20" height="340" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-8" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="Krg6Kf3u61ibPq_FTrr5-7" vertex="1"> <mxGeometry x="5" y="70" width="10" height="30" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-10" value="" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};participant=umlActor;" parent="1" vertex="1"> <mxGeometry x="170" y="220" width="20" height="340" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-11" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="Krg6Kf3u61ibPq_FTrr5-10" vertex="1"> <mxGeometry x="5" y="70" width="10" height="30" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-2" value="Gateway" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="470" y="220" width="100" height="340" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-4" value="Hyperledger Fabric" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="580" y="220" width="100" height="340" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-16" value="Action executed" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=130;height=15;" parent="1" vertex="1"> <mxGeometry x="160" y="330" width="500" height="150" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-29" value="transfer(userAccount, amount, gwAccount)" style="edgeStyle=elbowEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;curved=0;" parent="1" source="Krg6Kf3u61ibPq_FTrr5-8" target="Krg6Kf3u61ibPq_FTrr5-17" edge="1"> <mxGeometry x="0.0225" y="20" relative="1" as="geometry"> <Array as="points"> <mxPoint x="230" y="300" /> </Array> <mxPoint as="offset" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-26" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="625" y="360" width="10" height="30" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-28" value="initiate-cross-chain-tx(userAccount, businessData)" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;" parent="1" source="Krg6Kf3u61ibPq_FTrr5-27" target="Krg6Kf3u61ibPq_FTrr5-26" edge="1"> <mxGeometry x="-0.3864" y="10" relative="1" as="geometry"> <mxPoint x="145" y="550" as="sourcePoint" /> <mxPoint x="625" y="500" as="targetPoint" /> <mxPoint as="offset" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-27" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="175" y="360" width="10" height="20" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-24" value="triggerEvent" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;" parent="1" source="Krg6Kf3u61ibPq_FTrr5-26" target="Krg6Kf3u61ibPq_FTrr5-22" edge="1"> <mxGeometry x="0.0833" y="-10" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="625" y="530" as="sourcePoint" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-22" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="515" y="390" width="10" height="30" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-25" value="submit-cc-tx(userAccount, businessData)" style="edgeStyle=elbowEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;curved=0;labelBackgroundColor=default;" parent="1" edge="1"> <mxGeometry x="0.0829" y="-10" relative="1" as="geometry"> <mxPoint as="offset" /> <mxPoint x="515" y="409.7171428571429" as="sourcePoint" /> <mxPoint x="395" y="409.7171428571429" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-15" value="Timeout" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=70;height=15;" parent="1" vertex="1"> <mxGeometry x="160" y="490" width="500" height="60" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-39" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="385" y="512" width="10" height="28" as="geometry" /> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-40" value="transfer(scAccount, amount, userAccount)" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="1" source="Krg6Kf3u61ibPq_FTrr5-39" target="Krg6Kf3u61ibPq_FTrr5-39" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="390" y="505" as="sourcePoint" /> <Array as="points"> <mxPoint x="420" y="530" /> <mxPoint x="420" y="540" /> </Array> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-42" value="expire(userAccount)" style="edgeStyle=elbowEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;curved=0;" parent="1" source="Krg6Kf3u61ibPq_FTrr5-14" target="Krg6Kf3u61ibPq_FTrr5-39" edge="1"> <mxGeometry x="-0.05" y="10" relative="1" as="geometry"> <Array as="points"> <mxPoint x="340" y="520" /> </Array> <mxPoint as="offset" /> </mxGeometry> </mxCell> <mxCell id="Krg6Kf3u61ibPq_FTrr5-14" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1"> <mxGeometry x="175" y="512" width="10" height="20" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> " + style="background-color: rgb(255, 255, 255);" + id="svg14" + sodipodi:docname="gateway-event-b-fabric-ethereum-animation.svg" + inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <sodipodi:namedview + id="namedview14" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:zoom="3.1364985" + inkscape:cx="168.5" + inkscape:cy="103.45932" + inkscape:window-width="1920" + inkscape:window-height="974" + inkscape:window-x="-11" + inkscape:window-y="-11" + inkscape:window-maximized="1" + inkscape:current-layer="svg14" /> + <defs + id="defs1" /> + <rect + fill="#ffffff" + width="100%" + height="100%" + x="0" + y="0" + id="rect" + /> + <path + d="M 86,120 V 98 h 63.63" + fill="none" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="stroke" + id="trigger-event" /> + <path + d="m 154.88,98 -7,3.5 1.75,-3.5 -1.75,-3.5 z" + fill="#000000" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="all" + id="path2" /> + <g + transform="translate(-0.5,-0.5)" + id="g2"> + <switch + id="switch2"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 83px; margin-left: 95px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3. trigger cc-tx event</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="45" + y="77" + width="100" + height="15.75" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAA/CAYAAADOgp5DAAAAAXNSR0IArs4c6QAAF9xJREFUeF7tnQXMXcXTxrcUJ0CgUFxKcIK0UCDQYsWluHtwL+5WNMW1aKC4O8XdtWhxd4oElwAlv032Zt9595yze+8999zezibk+/59z115dnafmdmZ3R5jx44da7QoAoqAIqAIKAKJCPRQAklETD9XBBQBRUARsAgogaggKAKKgCKgCNSFgBJIXbDpjxQBRUARUASUQFQGFAFFQBFQBOpCQAmkLtj0R4qAIqAIKAJKICoDioAioAgoAnUhoARSF2z6I0VAEVAEFIFcAvn222/NnXfeae6//37z3HPPmU8++cRMOeWUZrHFFjPLL7+82XTTTc2CCy5oJphggvEOyXfeeceO/9VXX7VjHzp0qDnyyCPHOxx0wIqAIjD+IhAkkD/++MNccMEF5vjjjzc//PBDLjprr722OfbYY03fvn1Njx492gbJ//77zzz88MPm999/N4MHD256v5RAmg6pVlgiAmPGjDHXXHON2Wabbcw000xTYktadSchUCQ33QgEwjjkkEPMxRdfHI3DtNNOa8477zyrkbcDiXz88cfm6KOPNldccYW56qqrzJZbbhk9ltgPlUBikdLvqkTgr7/+MjfffLO1kOecc05z9dVXm169elXZJW17HEAgVm66EAiWx0EHHWTOPffc2hAhh3322cestdZaVgD/+ecf8+KLL5oRI0aYG2+8sfYdrq2bbrrJrLrqqpXC8/zzz5s11lijZjkpgVQ6Hdp4hQj8+eefVhk866yzbC9WW201JZAK52NcaTpFbroQyO2332623npr88svv9ixLrXUUtayWHzxxbuNHSKBRPbdd9/a9yuvvLLV+meaaabKsHrqqafMgAEDau2XRSCVDVAbVgQiEUAhZH1eeOGFSiCRmOlnxqTITY1AfvzxR7PDDjuYW2+91WI4xxxzWILgsDyrQCInn3xyl8NjzOUNNtigsnlQAqkMem24zRBI2QjarOvanQoRSJGbGoGw8eL6cdbH3nvvbYYNG2YmmWSS3KG89tprZqONNjLvvfee/Q6NB1KZeOKJK4FACaQS2LXRNkQgZSNow+5rlypCIEVuagRyxhlnmP3226/WZdxZMdFLX375pT2kfvTRR+1vd9xxR+tznXzyySsZvhJIJbBro22IQMpG0Ibd1y5VhECK3FgCIeT1jTfeMC+88IJ5+eWXzbvvvmvOOeccM//88xcOQRIIZyicm3CoXkVRAqkCdW2zHRFI2Qjasf/ap2oQSJGbhjPRX3rpJbPOOuuYr776qjIXlgypzYP9ySefNMsuu6z9RALlkgF/++03GwzAGRAJlJwHrbDCCmaLLbYwAwcONJNNNpmpN4z3559/NiNHjjRYeKNGjbL1QLZLLrmkWW+99cwmm2xievfubftHyOVWW21l///YCBqUgdGjR5vrr7/ePPbYY+aVV16xbsn55pvP9n277bazwRETTjih+f777631eN9999k2YgMOeIOMpNLbbrvNPPLIIzaZkv9NWXrppU2/fv3MuuuuW8OqaBlILN0cEY599tlnm1tuucXWT64R0YDNTmBlTsCAeXnmmWfsnFBob9FFF7UuWuZ/iimmKBpKl7+XVW9RJ4477jhz1FFHFX1mdtllF4PnAZnB9eyH7m+88cb28L0oZ+SLL76wgTfIgStXXnmllatmhvSzVp944gm7blByn332Wdsca5M5WnHFFe364X9ntfvvv//a89qTTjrJ/pZgH2SYtRdbpKwWufpbtVboP+sZOQYjP/Gb8REdy96Sh0+q3LAPNkQgHKKTb3HiiSfW8K/iEL2ZBLLzzjubvfbaq0uIshscGz1BBoMGDUomELAi7JmkS7dBhYSWsGmIDFcgYdEpBPLZZ5+ZI444wpJfXiH585RTTjHTTz99MoHEtkH7kBbywWYEYWWVEIGw2JmLEFbNivYj5+m0006zSbNFCbOMhcRaAkSKbl4oq97YTa6ejeCtt94y22+/vd14XDnzzDMNG2TWhkyuwOGHH24xdGX33Xe3Z6epZJs1tth1435PoiTzNNtsswWrfOihh8z6669fO+sFK8YQS3aXXnqpXZuu5Ln6W7VWUAhRNjmCyJNj9i/mh1QN9hlZ6pGbugkELX348OF2s3MH77FaS+xCiP2uWQTCBBADff755webRvAQILSyFAsE7YlFdcwxx8QOyebe4ELcbbfd7G+KLBAswT322KPLBpDXGBviCSecYLXOGAsETQqLZtddd80lwFCbjIW2sjYViSVydfnll2eOhQ0LjTl20Yf6RJtEHeLyjC0sQDRY2s4ixLLqje0j39WzEfC76667zpK2W88LLLCA/bdFFlmkW/PIw7XX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" + id="image2" /> + </switch> + </g> + <path + d="m 196,123 v 22 h -63.63" + fill="none" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="stroke" + id="path" /> + <path + d="m 127.12,145 7,-3.5 -1.75,3.5 1.75,3.5 z" + fill="#000000" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="all" + id="path4" /> + <g + transform="translate(-0.5,-0.5)" + id="g4"> + <switch + id="switch4"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 160px; margin-left: 181px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1. Subscribe</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="150.5" + y="154" + width="61" + height="15.75" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPQAAAA/CAYAAADXAOWJAAAAAXNSR0IArs4c6QAAD6BJREFUeF7tnXfMFUUXxg9qrFFiwy4YsIJiA0HAQrdiodrFRpGqIIiVJhCKvWOXqiCxYiwQlVhAIdIUIxBDQClGShSi8OU3+eZmnXfrvcu7917PJP4h7+7szrPznH7mVtmxY8cO0aEIKAJlgUAVJXRZfEddhCJgEFBC60ZQBMoIASV0GX1MXYoioITWPaAIlBECSugy+pi6FEVACa17QBEoIwSU0GX0MXUpikBehP7kk0/kmmuukdWrV8vnn38ujRo1Kmok//77b/nxxx/lww8/lNmzZ8uSJUvkhx9+MO+87777yqmnnio1a9aUVq1ayXnnnSeHHHKIVKlSpWjW9MUXX0jjxo1z7zN48GC59957i+b9SulF+O4dOnSQBQsWmNcOwrJUMU9M6F9//VVuu+02mTFjhgGkmAm9detWeeedd2TkyJHyzTffxN53nTp1krvuuktOOeWUoiB2qW6u2IBX4oVKaA/YW7Zskf79+8uTTz6Z+9diJfSaNWvMu7766qt5bRc0N/ffcccdstdee+U1R1o3KaHTQlKMZaYaWkT+/PNPGTVqlDzwwAP/QrcYCe1aEd4XbtCggZx++uly9NFHm3/+559/jPn11VdfycqVKyvsnBEjRhhS77bbbuntqoQzKaETAhZyuRJaRDZt2iSDBg2Sxx57rAJUxUZoCIrgufvuu3PvesABB8g999wjN910k+y3336+n3v79u3y7bffyoMPPmjMdDvQ1E8//bRghmflVyuh0yN03JlKFfNIH/rnn3+WO++8U6ZPn+6LRbERetGiRdKuXTsT+GJUr15dXn75ZTn33HNjfUvciuHDh5v/7Dj//PON6X7EEUfEmiPti0p1c6WNQ2XOV6qYBxKagNKbb75pooA2IuwHaLERevz48XLzzTfnXnXMmDHSp0+fRNoV/5s53n333dw8r732mlx99dWVuadyzyrVzZUJWCk9tFQxr0BoTM85c+aYyLDX9ASniy66SM444wxDcjuKidCY26RzHnroIfN6hx12mLz99tvmnZOOadOmyZVXXpm7rVu3boJw2HPPPZNOVfD1pbq5Cl54hhOUKuYVCO0GDSymbOghQ4bI+++/b3LQxUhoAndo42eeeca83sknnyxTpkyR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" + id="image4" /> + </switch> + </g> + <path + d="m 236,98 h 60 v 15.63" + fill="none" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="stroke" + id="submit-cc-tx" /> + <path + d="m 296,118.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" + fill="#000000" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="all" + id="path6" /> + <g + transform="translate(-0.5,-0.5)" + id="g6"> + <switch + id="switch6"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 81px; margin-left: 278px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">4. submit cc-tx</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="242.5" + y="75" + width="71" + height="15.75" + xlink:href="data:image/png;base64,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" + id="image6" /> + </switch> + </g> + <path + d="m 21,140 v 50 h 65 v -13.63" + fill="none" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="stroke" + id="initiate-cc-tx" /> + <path + d="m 86,171.12 3.5,7 -3.5,-1.75 -3.5,1.75 z" + fill="#000000" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="all" + id="path8" /> + <g + transform="translate(-0.5,-0.5)" + id="g8"> + <switch + id="switch8"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 200px; margin-left: 35px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">2. initiate cc-tx</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="0" + y="194" + width="70" + height="15.75" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAA/CAYAAAA7UNe2AAAAAXNSR0IArs4c6QAAEJVJREFUeF7tnXWsHkUXxqdQLA0QIHjQoCWFYsHdXVoKxR2KFHcoTpHg7tDiUqy0QHDXFIIXgoTgFhwSoF9+8zHLvnNnd2Z2d+57L++ZpH/0vjtnZ545++yxme0zadKkSUqaICAICAIJEOgjBJMAVREpCAgCGgEhGFEEQUAQSIaAEEwyaEWwICAICMGIDggCgkAyBIRgkkErggUBQUAIRnRAEBAEkiEgBJMMWhEsCAgCpQTz448/qqeeekrdcccd6rXXXlMTJkzQiM0444xq2WWXVSuttJLaYostVP/+/dVkk03WdjS//fZbtd1226kHH3xQj2WvvfZS5557rppmmmm6fWwnn3yyGjFihL7vEkssoW699Va18MIL1x5HKrm1ByYCBAEHAk6C+e2339QVV1yhH86PP/7YC9zGG2+sUPyBAwd6r015QW8mmL///ls9+uij6tdff1WbbrppIUw9kWC+/vprddNNN6kdd9xRzTDDDCmXWGTXRCBUz2reJuvehWBQlkMOOUSNHj066h7zzDOPuvTSS9X666+v+vTpE9W3qYt7K8F89NFH6vjjj1ejRo1SN9xwg7bCilpPIpg//vhD3Xnnneqkk05S8847r7rxxhvVTDPN1NRyipyGEYjRs6Zu3UIwv/zyizr88MPVJZdcksmfdtpptcLjCmHq9+3bV3311VfqoYceUldffbV6/fXXs2shmeuvv16tttpqTY0vSk5vJJgXX3xRbbDBBuq7777Tc+0tBPP777+rI488Up1//vl63Outt54QTJS2du/FsXrW1OhaCIY30Pbbb5/JhlAuvvhiteKKKzqtEh4KlOzKK6/M+mDe8/9ZZpmlqTH+p+U888wzauWVV87m6COYngIGbvRBBx2kLr/8ciGYnrIoJeNol55lBPP999+r3XbbTd111116mKHWCIHg/fffX5v3pmE2b7nllr0A9vYPsV0LX3fmQjB1Eeze/u3Ss4xgGACm+k8//aRnfvTRR6sTTzxRu0S+hvm1+eabq88//1xfus8++6izzz5bTT311L6uHf97uxa+LvBCMHUR7N7+7dKzjGDIGB188MHZrImxrLPOOkEoEBjedttt1cMPPyzmchBi/17UroWPHGaXy4Vg6iLY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" + id="image8" /> + </switch> + </g> + <circle + cx="21" + cy="87.5" + fill="#ffffff" + stroke="#000000" + pointer-events="all" + id="ellipse8" + r="7.5" /> + <path + d="m 21,95 v 25 m 0,-20 H 6 m 15,0 H 36 M 21,120 6,140 m 15,-20 15,20" + fill="none" + stroke="#000000" + stroke-miterlimit="10" + pointer-events="all" + id="path9" /> + <g + transform="translate(-0.5,-0.5)" + id="g9"> + <switch + id="switch9"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 147px; margin-left: 21px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">User</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="8.5" + y="147.5" + width="25" + height="17" + xlink:href="data:image/png;base64,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" + id="image9" /> + </switch> + </g> + <rect + x="46" + y="120" + width="80" + height="50" + rx="7.5" + ry="7.5" + fill="#ffffff" + stroke="#000000" + pointer-events="all" + id="rect9" /> + <g + transform="translate(-0.5,-0.5)" + id="g10"> + <switch + id="switch10"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 145px; margin-left: 47px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Source smart contract</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="47" + y="131" + width="78" + height="32" + xlink:href="data:image/png;base64,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" + id="image10" /> + </switch> + </g> + <rect + x="256" + y="120" + width="80" + height="50" + rx="7.5" + ry="7.5" + fill="#ffffff" + stroke="#000000" + pointer-events="all" + id="rect10" /> + <g + transform="translate(-0.5,-0.5)" + id="g11"> + <switch + id="switch11"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 145px; margin-left: 257px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Target smart contract</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="257" + y="131" + width="78" + height="32" + xlink:href="data:image/png;base64,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" + id="image11" /> + </switch> + </g> + <rect + x="156" + y="73" + width="80" + height="50" + rx="7.5" + ry="7.5" + fill="#ffffff" + stroke="#000000" + pointer-events="all" + id="gateway" /> + <g + transform="translate(-0.5,-0.5)" + id="g12"> + <switch + id="switch12"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 98px; margin-left: 157px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Gateway</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <image + x="157" + y="91.5" + width="78" + height="17" + xlink:href="data:image/png;base64,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" + id="image12" /> + </switch> + </g> + <image + x="145.5" + y="39.5" + width="100" + height="20" + xlink:href="data:image/png;base64,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" + preserveAspectRatio="none" + id="subscription" + inkscape:svg-dpi="1" + visibility="hidden"/> + <image + x="161.5" + y="-0.5" + width="32" + height="32" + xlink:href="data:image/png;base64,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" + preserveAspectRatio="none" + id="wallet" + visibility="hidden" /> + <circle + cx="216" + cy="16" + fill="#ffffff" + stroke="#000000" + pointer-events="all" + id="crypto_amount" + r="14" + visibility="hidden" /> + +</svg> diff --git a/gateway-prob-animation/fabric-ethereum/gateway-vis-file.json b/gateway-prob-animation/fabric-ethereum/gateway-vis-file.json new file mode 100644 index 0000000000000000000000000000000000000000..aca132446eb9b9f25e70e4ef42cd27c2b2a1c3a6 --- /dev/null +++ b/gateway-prob-animation/fabric-ethereum/gateway-vis-file.json @@ -0,0 +1,79 @@ +{ + "svg": "gateway-event-b-fabric-ethereum-animation.svg", + "items": [ + { + "id": "subscription", + "attr": "visibility", + "value": "IF subscribed=1 THEN \"visible\" ELSE \"hidden\" END" + }, + { + "id": "initiate-cc-tx", + "attr": "stroke", + "value": "IF initiated=1 THEN \"red\" ELSE \"black\" END" + }, + { + "id": "trigger-event", + "attr": "stroke", + "value": "IF triggered=1 THEN \"red\" ELSE \"black\" END" + }, + { + "id": "gateway", + "attr": "fill", + "value": "IF gateway_processing=1 THEN \"green\" ELSE \"white\" END" + }, + { + "id": "submit-cc-tx", + "attr": "stroke", + "value": "IF submit_cc_tx=1 THEN \"red\" ELSE \"black\" END" + }, + { + "id": "wallet", + "attr": "visibility", + "value": "IF wallet_created=1 THEN \"visible\" ELSE \"hidden\" END" + }, + { + "id": "crypto_amount", + "attr": "fill", + "value": "IF wallet_amount>0 THEN \"green\" ELSE \"red\" END" + }, + { + "id": "crypto_amount", + "attr": "visibility", + "value": "IF wallet_created=1 THEN \"visible\" ELSE \"hidden\" END" + } + ], + "events": [ + { + "id": "subscription", + "event": "SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC" + }, + { + "id": "initiate-cc-tx", + "event": "INITIATE_CC_TX_IN_FABRIC" + }, + { + "id": "trigger-event", + "event": "TRIGGER_CC_TX_EVENT_IN_FABRIC" + }, + { + "id": "gateway", + "event": "LISTEN_CC_TX_EVENT_IN_FABRIC" + }, + { + "id": "submit-cc-tx", + "event": "SUBMIT_CC_TX_TO_ETHEREUM" + }, + { + "id": "wallet", + "event": "CREATE_ADDRESS_IN_ETHEREUM" + }, + { + "id": "crypto_amount", + "event": "DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM" + }, + { + "id": "crypto_amount", + "event": "SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM" + } + ] +} \ No newline at end of file diff --git a/gateway-prob-animation/vis-file.json b/gateway-prob-animation/vis-file.json deleted file mode 100644 index a9efa9ee043508bd99896afaf9d65d3165f4534f..0000000000000000000000000000000000000000 --- a/gateway-prob-animation/vis-file.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "svg": "button.svg", - "items": [ - { - "id": "button", - "attr": "visibility", - "value": "IF button=TRUE THEN \"visible\" ELSE \"hidden\" END" - } - ], - "events": [ - { - "id": "button", - "event": "press_button" - } - ] -} \ No newline at end of file