diff --git a/BIG/CCTx_Abstract_DLT_m1.bcm b/BIG/CCTx_Abstract_DLT_m1.bcm index b7a0723f3f5be8a9ef7568d41a638b43571b4b04..62168e0c70d006d38eed0de2c7b4f293797f3121 100644 --- a/BIG/CCTx_Abstract_DLT_m1.bcm +++ b/BIG/CCTx_Abstract_DLT_m1.bcm @@ -35,11 +35,11 @@ <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_a_IQYKmDEe6I4bA9GxwhqQ"/> </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="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ"> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> - <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.scEvent name="received_cross_chain_transactionv" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIATE_CROSS_CHAIN_TRANSACTION" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ"> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/> + <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> + <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> </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="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ"> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/> diff --git a/BIG/CCTx_Abstract_DLT_m1.bpo b/BIG/CCTx_Abstract_DLT_m1.bpo index 3b3b3a42d8802b4eec750bec9e70a253dd4ebb5e..c0247d506d29995d35a3ddd0cf5b2b57a2ee4707 100644 --- a/BIG/CCTx_Abstract_DLT_m1.bpo +++ b/BIG/CCTx_Abstract_DLT_m1.bpo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<org.eventb.core.poFile org.eventb.core.poStamp="1"> +<org.eventb.core.poFile org.eventb.core.poStamp="2"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="1"> <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)"/> @@ -38,9 +38,9 @@ <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="/BIG/CCTx_Abstract_DLT_m1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="1"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Abstract_DLT_m1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Abstract_DLT_m1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_m1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="1"> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> diff --git a/BIG/CCTx_Abstract_DLT_m1.bum b/BIG/CCTx_Abstract_DLT_m1.bum index c41d0e3369f829a4c4ee359b67672f2c14b90c52..344e0fd130f511b12ba7e6efd0ae720c697ba608 100644 --- a/BIG/CCTx_Abstract_DLT_m1.bum +++ b/BIG/CCTx_Abstract_DLT_m1.bum @@ -1,54 +1,54 @@ <?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="_559ZqKvjEe6I4bA9GxwhqQ" org.eventb.texttools.text_lastmodified="1704470582699" org.eventb.texttools.text_representation="machine BIG_m1 sees BIG_c1 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions invariants 	@inv1: received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS 	@inv2: triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS 	@inv3: subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS 	@inv4: gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS 	@inv6: received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS events event INITIALISATION 	then 		@act1: received_transactions ≔ ∅ 		@act2: triggered_events ≔ ∅ 		@act3: subscriptions ≔ ∅ 		@act4: gateway_pending_transactions ≔ ∅ 		@act6: received_cross_chain_transactions ≔ ∅ end event SUBSCRIBE_SMART_CONTRACT_EVENTS 	where 		@grd1: gateway ↦ source_smart_contract ∉ subscriptions // The gateway is not already subscribed to the smart contract events 	then 		@act1: subscriptions ≔ subscriptions ∪ {gateway ↦ source_smart_contract} // The gateway is subscribed to listen to the smart contract events end event SUBMIT_CROSS_CHAIN_TRANSACTION 	any transaction 	where 		@grd1: transaction ∈ TRANSACTIONS 		@grd3: transaction ∉ received_transactions[{source_smart_contract}] 	then 		@act1: received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction} end event PROCESS_CROSS_CHAIN_TRANSACTION 	any transaction cross_chain_event 	where 		@grd1: source_smart_contract ↦ transaction ∈ received_transactions // The smart contract has a pending transaction to process 		@grd2: cross_chain_event ∉ triggered_events[{source_smart_contract}] // The smart contract will allways trigger a new event 	then 		@act1: triggered_events ≔ triggered_events ∪ {source_smart_contract ↦ cross_chain_event} // The smart contract triggers a new event related to the transaction processing 		@act2: received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction} // The smart contract processed the transaction end event LISTEN_SMART_CONTRACT_EVENT 	any cross_chain_event cross_chain_transaction 	where 		@grd1: source_smart_contract ↦ cross_chain_event ∈ triggered_events // The smart contract has triggered an event 		@grd2: gateway ↦ source_smart_contract ∈ subscriptions // Exist a subscription to the smart contract events 		@grd3: gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions // The event was not already listened 	then 		@act1: gateway_pending_transactions ≔ gateway_pending_transactions ∪ {gateway ↦ cross_chain_transaction} // The event is added to the cross-chain transactions to be processed by the gateway 		@act2: triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event} // The event is listened and processed end event GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION 	any cross_chain_transaction 	when 		@grd1: gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions // There is one pending cross-chain transaction to process 	then 		@act1: received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction} 		@act2: gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction} 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="_VOBRDLk7Ee6otoREOj7KsQ" org.eventb.texttools.text_lastmodified="1705937497360" org.eventb.texttools.text_representation="machine CCTx_Abstract_DLT_m1 sees CCTx_Abstract_DLT_c1 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions invariants @inv1; received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS @inv2; triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS @inv3; subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS @inv4; gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS @inv6; received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS events event INITIALISATION then @act1; received_transactions ≔ ∅ @act2; triggered_events ≔ ∅ @act3; subscriptions ≔ ∅ @act4; gateway_pending_transactions ≔ ∅ @act6; received_cross_chain_transactions ≔ ∅ end event SUBSCRIBE_SMART_CONTRACT_EVENTS where @grd1; gateway ↦ source_smart_contract ∉ subscriptions // The gateway is not already subscribed to the smart contract events then @act1; subscriptions ≔ subscriptions ∪ {gateway ↦ source_smart_contract} // The gateway is subscribed to listen to the smart contract events end event INITIATE_CROSS_CHAIN_TRANSACTION any transaction where @grd1; transaction ∈ TRANSACTIONS @grd3; transaction ∉ received_transactions[{source_smart_contract}] then @act1; received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction} end event PROCESS_CROSS_CHAIN_TRANSACTION any transaction cross_chain_event where @grd1; source_smart_contract ↦ transaction ∈ received_transactions // The smart contract has a pending transaction to process @grd2; cross_chain_event ∉ triggered_events[{source_smart_contract}] // The smart contract will allways trigger a new event then @act1; triggered_events ≔ triggered_events ∪ {source_smart_contract ↦ cross_chain_event} // The smart contract triggers a new event related to the transaction processing @act2; received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction} // The smart contract processed the transaction end event LISTEN_SMART_CONTRACT_EVENT any cross_chain_event cross_chain_transaction where @grd1; source_smart_contract ↦ cross_chain_event ∈ triggered_events // The smart contract has triggered an event @grd2; gateway ↦ source_smart_contract ∈ subscriptions // Exist a subscription to the smart contract events @grd3; gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions // The event was not already listened then @act1; gateway_pending_transactions ≔ gateway_pending_transactions ∪ {gateway ↦ cross_chain_transaction} // The event is added to the cross-chain transactions to be processed by the gateway @act2; triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event} // The event is listened and processed end event GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION any cross_chain_transaction where @grd1; gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions // There is one pending cross-chain transaction to process then @act1; received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction} @act2; gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction} end end " version="5"> <org.eventb.core.seesContext name="_sUpukKl_Ee6I4bA9GxwhqQ" org.eventb.core.target="CCTx_Abstract_DLT_c1"/> - <org.eventb.core.event name="'" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION" org.eventb.emf.persistence.emf_id="_558yj6vjEe6I4bA9GxwhqQ"> - <org.eventb.core.action name="_SAxOQKmDEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_558yiqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_TlWCkamHEe6I4bA9GxwhqQ" org.eventb.core.assignment="triggered_events ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_558yi6vjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_mv5M0KpAEe6I4bA9GxwhqQ" org.eventb.core.assignment="subscriptions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act3;" org.eventb.emf.persistence.emf_id="_558yjKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_8Ty9sKpBEe6I4bA9GxwhqQ" org.eventb.core.assignment="gateway_pending_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act4;" org.eventb.emf.persistence.emf_id="_558yjavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_J6KjYKpbEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_cross_chain_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act6;" org.eventb.emf.persistence.emf_id="_558yjqvjEe6I4bA9GxwhqQ"/> + <org.eventb.core.event name="'" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION" org.eventb.emf.persistence.emf_id="_VOBQ77k7Ee6otoREOj7KsQ"> + <org.eventb.core.action name="_SAxOQKmDEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_VOBQ6rk7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_TlWCkamHEe6I4bA9GxwhqQ" org.eventb.core.assignment="triggered_events ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_VOBQ67k7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_mv5M0KpAEe6I4bA9GxwhqQ" org.eventb.core.assignment="subscriptions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act3;" org.eventb.emf.persistence.emf_id="_VOBQ7Lk7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_8Ty9sKpBEe6I4bA9GxwhqQ" org.eventb.core.assignment="gateway_pending_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act4;" org.eventb.emf.persistence.emf_id="_VOBQ7bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_J6KjYKpbEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_cross_chain_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act6;" org.eventb.emf.persistence.emf_id="_VOBQ7rk7Ee6otoREOj7KsQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_I9G5gKpAEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" org.eventb.emf.persistence.emf_id="_558ykqvjEe6I4bA9GxwhqQ"> - <org.eventb.core.action name="_a_IQYKmDEe6I4bA9GxwhqQ" org.eventb.core.assignment="subscriptions ≔ subscriptions ∪ {gateway ↦ source_smart_contract}" org.eventb.core.comment="The gateway is subscribed to listen to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_558ykavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_SAx1UKmDEe6I4bA9GxwhqQ" org.eventb.core.comment="The gateway is not already subscribed to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract ∉ subscriptions" org.eventb.emf.persistence.emf_id="_558ykKvjEe6I4bA9GxwhqQ"/> + <org.eventb.core.event name="_I9G5gKpAEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" org.eventb.emf.persistence.emf_id="_VOBQ8rk7Ee6otoREOj7KsQ"> + <org.eventb.core.action name="_a_IQYKmDEe6I4bA9GxwhqQ" org.eventb.core.assignment="subscriptions ≔ subscriptions ∪ {gateway ↦ source_smart_contract}" org.eventb.core.comment="The gateway is subscribed to listen to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_VOBQ8bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_SAx1UKmDEe6I4bA9GxwhqQ" org.eventb.core.comment="The gateway is not already subscribed to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract ∉ subscriptions" org.eventb.emf.persistence.emf_id="_VOBQ8Lk7Ee6otoREOj7KsQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_58YTEKmAEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_559Zk6vjEe6I4bA9GxwhqQ"> - <org.eventb.core.action name="_AeyzAKmIEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_559ZkqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_TlWCkqmHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction ∈ TRANSACTIONS" org.eventb.emf.persistence.emf_id="_559ZkKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_HCtL8KmIEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="transaction ∉ received_transactions[{source_smart_contract}]" org.eventb.emf.persistence.emf_id="_559ZkavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.parameter name="_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="transaction" org.eventb.emf.persistence.emf_id="_558yk6vjEe6I4bA9GxwhqQ"/> + <org.eventb.core.event name="_VRZ8ELk7Ee6otoREOj7KsQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_VOBQ97k7Ee6otoREOj7KsQ"> + <org.eventb.core.action name="_AeyzAKmIEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_VOBQ9rk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_TlWCkqmHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction ∈ TRANSACTIONS" org.eventb.emf.persistence.emf_id="_VOBQ9Lk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_HCtL8KmIEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="transaction ∉ received_transactions[{source_smart_contract}]" org.eventb.emf.persistence.emf_id="_VOBQ9bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.parameter name="_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="transaction" org.eventb.emf.persistence.emf_id="_VOBQ87k7Ee6otoREOj7KsQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_TlWCkKmHEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_559ZmqvjEe6I4bA9GxwhqQ"> - <org.eventb.core.action name="_I9G5gapAEe6I4bA9GxwhqQ" org.eventb.core.assignment="triggered_events ≔ triggered_events ∪ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.comment="The smart contract triggers a new event related to the transaction processing" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_559ZmKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_gaDEIKmHEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.comment="The smart contract processed the transaction" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_559ZmavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_iUmtQKpAEe6I4bA9GxwhqQ" org.eventb.core.comment="The smart contract has a pending transaction to process" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction ∈ received_transactions" org.eventb.emf.persistence.emf_id="_559ZlqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_1SOwwKmDEe6I4bA9GxwhqQ" org.eventb.core.comment="The smart contract will allways trigger a new event" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event ∉ triggered_events[{source_smart_contract}]" org.eventb.emf.persistence.emf_id="_559Zl6vjEe6I4bA9GxwhqQ"/> - <org.eventb.core.parameter name="_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="transaction" org.eventb.emf.persistence.emf_id="_559ZlKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.parameter name="_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_event" org.eventb.emf.persistence.emf_id="_559ZlavjEe6I4bA9GxwhqQ"/> + <org.eventb.core.event name="_TlWCkKmHEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_VOBQ_rk7Ee6otoREOj7KsQ"> + <org.eventb.core.action name="_I9G5gapAEe6I4bA9GxwhqQ" org.eventb.core.assignment="triggered_events ≔ triggered_events ∪ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.comment="The smart contract triggers a new event related to the transaction processing" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_VOBQ_Lk7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_gaDEIKmHEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.comment="The smart contract processed the transaction" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_VOBQ_bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_iUmtQKpAEe6I4bA9GxwhqQ" org.eventb.core.comment="The smart contract has a pending transaction to process" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction ∈ received_transactions" org.eventb.emf.persistence.emf_id="_VOBQ-rk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_1SOwwKmDEe6I4bA9GxwhqQ" org.eventb.core.comment="The smart contract will allways trigger a new event" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event ∉ triggered_events[{source_smart_contract}]" org.eventb.emf.persistence.emf_id="_VOBQ-7k7Ee6otoREOj7KsQ"/> + <org.eventb.core.parameter name="_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="transaction" org.eventb.emf.persistence.emf_id="_VOBQ-Lk7Ee6otoREOj7KsQ"/> + <org.eventb.core.parameter name="_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_event" org.eventb.emf.persistence.emf_id="_VOBQ-bk7Ee6otoREOj7KsQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_8VKFEKpAEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.emf.persistence.emf_id="_559ZoqvjEe6I4bA9GxwhqQ"> - <org.eventb.core.action name="_8T0y4KpBEe6I4bA9GxwhqQ" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∪ {gateway ↦ cross_chain_transaction}" org.eventb.core.comment="The event is added to the cross-chain transactions to be processed by the gateway" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_559ZoKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_NAy78KpBEe6I4bA9GxwhqQ" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.comment="The event is listened and processed" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_559ZoavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_DMOGsKpFEe6I4bA9GxwhqQ" org.eventb.core.comment="The smart contract has triggered an event" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event ∈ triggered_events" org.eventb.emf.persistence.emf_id="_559ZnavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_AezaEKmIEe6I4bA9GxwhqQ" org.eventb.core.comment="Exist a subscription to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract ∈ subscriptions" org.eventb.emf.persistence.emf_id="_559ZnqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_x51DwKpCEe6I4bA9GxwhqQ" org.eventb.core.comment="The event was not already listened" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_559Zn6vjEe6I4bA9GxwhqQ"/> - <org.eventb.core.parameter name="_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_event" org.eventb.emf.persistence.emf_id="_559Zm6vjEe6I4bA9GxwhqQ"/> - <org.eventb.core.parameter name="_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_transaction" org.eventb.emf.persistence.emf_id="_559ZnKvjEe6I4bA9GxwhqQ"/> + <org.eventb.core.event name="_8VKFEKpAEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.emf.persistence.emf_id="_VOBRBrk7Ee6otoREOj7KsQ"> + <org.eventb.core.action name="_8T0y4KpBEe6I4bA9GxwhqQ" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∪ {gateway ↦ cross_chain_transaction}" org.eventb.core.comment="The event is added to the cross-chain transactions to be processed by the gateway" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_VOBRBLk7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_NAy78KpBEe6I4bA9GxwhqQ" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.comment="The event is listened and processed" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_VOBRBbk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_DMOGsKpFEe6I4bA9GxwhqQ" org.eventb.core.comment="The smart contract has triggered an event" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event ∈ triggered_events" org.eventb.emf.persistence.emf_id="_VOBRAbk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_AezaEKmIEe6I4bA9GxwhqQ" org.eventb.core.comment="Exist a subscription to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract ∈ subscriptions" org.eventb.emf.persistence.emf_id="_VOBRArk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_x51DwKpCEe6I4bA9GxwhqQ" org.eventb.core.comment="The event was not already listened" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_VOBRA7k7Ee6otoREOj7KsQ"/> + <org.eventb.core.parameter name="_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_event" org.eventb.emf.persistence.emf_id="_VOBQ_7k7Ee6otoREOj7KsQ"/> + <org.eventb.core.parameter name="_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_transaction" org.eventb.emf.persistence.emf_id="_VOBRALk7Ee6otoREOj7KsQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_0sEN8KpaEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_559Zp6vjEe6I4bA9GxwhqQ"> - <org.eventb.core.action name="_G1dcQKpbEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_559ZpavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.action name="_G1dcQapbEe6I4bA9GxwhqQ" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_559ZpqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.guard name="_tUzFcKpaEe6I4bA9GxwhqQ" org.eventb.core.comment="There is one pending cross-chain transaction to process" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_559ZpKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.parameter name="_tUzFcapaEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_transaction" org.eventb.emf.persistence.emf_id="_559Zo6vjEe6I4bA9GxwhqQ"/> + <org.eventb.core.event name="_0sEN8KpaEe6I4bA9GxwhqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_VOBRC7k7Ee6otoREOj7KsQ"> + <org.eventb.core.action name="_G1dcQKpbEe6I4bA9GxwhqQ" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_VOBRCbk7Ee6otoREOj7KsQ"/> + <org.eventb.core.action name="_G1dcQapbEe6I4bA9GxwhqQ" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_VOBRCrk7Ee6otoREOj7KsQ"/> + <org.eventb.core.guard name="_tUzFcKpaEe6I4bA9GxwhqQ" org.eventb.core.comment="There is one pending cross-chain transaction to process" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_VOBRCLk7Ee6otoREOj7KsQ"/> + <org.eventb.core.parameter name="_tUzFcapaEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_transaction" org.eventb.emf.persistence.emf_id="_VOBRB7k7Ee6otoREOj7KsQ"/> </org.eventb.core.event> - <org.eventb.core.invariant name="_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.emf.persistence.emf_id="_558yhavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.invariant name="_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.emf.persistence.emf_id="_558yhqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.invariant name="_Q6dKkKpAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.emf.persistence.emf_id="_558yh6vjEe6I4bA9GxwhqQ"/> - <org.eventb.core.invariant name="_c7TQ0KpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.emf.persistence.emf_id="_558yiKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.invariant name="_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv6;" org.eventb.core.predicate="received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.emf.persistence.emf_id="_558yiavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_558ygKvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_558ygavjEe6I4bA9GxwhqQ"/> - <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_558ygqvjEe6I4bA9GxwhqQ"/> - <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_558yg6vjEe6I4bA9GxwhqQ"/> - <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_558yhKvjEe6I4bA9GxwhqQ"/> + <org.eventb.core.invariant name="_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.emf.persistence.emf_id="_VOBQ5bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.invariant name="_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.emf.persistence.emf_id="_VOBQ5rk7Ee6otoREOj7KsQ"/> + <org.eventb.core.invariant name="_Q6dKkKpAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.emf.persistence.emf_id="_VOBQ57k7Ee6otoREOj7KsQ"/> + <org.eventb.core.invariant name="_c7TQ0KpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.emf.persistence.emf_id="_VOBQ6Lk7Ee6otoREOj7KsQ"/> + <org.eventb.core.invariant name="_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.label="inv6;" org.eventb.core.predicate="received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.emf.persistence.emf_id="_VOBQ6bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_VOBQ4Lk7Ee6otoREOj7KsQ"/> + <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_VOBQ4bk7Ee6otoREOj7KsQ"/> + <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_VOBQ4rk7Ee6otoREOj7KsQ"/> + <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_VOBQ47k7Ee6otoREOj7KsQ"/> + <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_VOBQ5Lk7Ee6otoREOj7KsQ"/> </org.eventb.core.machineFile> diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bcm b/BIG/CCTx_Ethereum_Fabric_m2.bcm index 9e51743ebcfe70a0dd68b6aef0a7f38ccdf6867d..eca242a596600028a6af455c11018f7179c5aad8 100644 --- a/BIG/CCTx_Ethereum_Fabric_m2.bcm +++ b/BIG/CCTx_Ethereum_Fabric_m2.bcm @@ -31,14 +31,14 @@ <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="authenticated_users⊆USERS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_Vz5s8K76Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c4" org.eventb.core.label="inv12;" org.eventb.core.predicate="auditted_transactions∈received_cross_chain_transactions → authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c5" org.eventb.core.label="inv13;" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈auditted_transactions)" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c4" org.eventb.core.label="inv12;" org.eventb.core.predicate="authenticated_transactions∈received_cross_chain_transactions → authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c5" org.eventb.core.label="inv13;" 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.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/> <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c6" org.eventb.core.label="inv14;" org.eventb.core.predicate="write_grant∈authenticated_users ↔ {write}" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_scPcsK8DEe6CsKD2nJu6WQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c7" org.eventb.core.label="inv16;" org.eventb.core.predicate="auditted_transactions[received_cross_chain_transactions]⊆dom(write_grant)" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ" org.eventb.core.theorem="false"/> + <org.eventb.core.scInvariant name="CCTx_Ethereum_Fabric_c7" org.eventb.core.label="inv16;" org.eventb.core.predicate="authenticated_transactions[received_cross_chain_transactions]⊆dom(write_grant)" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ" 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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.scVariable name="authenticated_transactions" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_EElgYLlfEe6otoREOj7KsQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_H2zkgKpbEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> - <org.eventb.core.scVariable name="auditted_transactions" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_MgfLYK77Ee6N-vMrFZcPfQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> <org.eventb.core.scVariable name="gateway_pending_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.scVariable name="write_grant" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_FuVEoK8HEe6CsKD2nJu6WQ" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/> <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.variable#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> @@ -51,7 +51,7 @@ <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_8Ty9sKpBEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_J6KjYKpbEe6I4bA9GxwhqQ"/> <org.eventb.core.scAction name="," org.eventb.core.assignment="authenticated_users ≔ {gateway_user}" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_ZLkMUK76Ee6N-vMrFZcPfQ"/> - <org.eventb.core.scAction name="-" org.eventb.core.assignment="auditted_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)" org.eventb.core.label="act12;" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_51HmgK78Ee6N-vMrFZcPfQ"/> + <org.eventb.core.scAction name="-" org.eventb.core.assignment="authenticated_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)" org.eventb.core.label="act12;" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_51HmgK78Ee6N-vMrFZcPfQ"/> <org.eventb.core.scAction name="." org.eventb.core.assignment="write_grant ≔ {gateway_user ↦ write}" org.eventb.core.label="act13;" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_3tsi0K8DEe6CsKD2nJu6WQ"/> </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_ETHEREUM" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVQLX-Ee6rT6SCwCdkxA"> @@ -59,12 +59,12 @@ <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_a_IQYKmDEe6I4bA9GxwhqQ"/> </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="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVQrX-Ee6rT6SCwCdkxA"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVQrX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_F6qVQ7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> - <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> + <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_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_XcWwsLk7Ee6otoREOj7KsQ"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_XcWwsLk7Ee6otoREOj7KsQ|org.eventb.core.refinesEvent#_XcWwsbk7Ee6otoREOj7KsQ"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> </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="PROCESS_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVRLX-Ee6rT6SCwCdkxA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionw" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVRLX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_F6qVRbX-Ee6rT6SCwCdkxA"/> @@ -94,6 +94,6 @@ <org.eventb.core.scGuard name="cross_chain_transactioq" org.eventb.core.label="grd11;" org.eventb.core.predicate="user∈authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_G79oUK76Ee6N-vMrFZcPfQ" 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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_9p1UoK8EEe6CsKD2nJu6WQ" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="user" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_kwOZ8K8IEe6CsKD2nJu6WQ" org.eventb.core.type="USERS"/> - <org.eventb.core.scAction name="cross_chain_transactios" org.eventb.core.assignment="auditted_transactions ≔ auditted_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_OatxgK79Ee6N-vMrFZcPfQ"/> + <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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_OatxgK79Ee6N-vMrFZcPfQ"/> </org.eventb.core.scEvent> </org.eventb.core.scMachineFile> diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bpo b/BIG/CCTx_Ethereum_Fabric_m2.bpo index 3b5148e21e319ff2eb7440a21221bb34c7c2caa8..cd3bb8f0bd23b04fa96db2a7d2f1b3d723b4c665 100644 --- a/BIG/CCTx_Ethereum_Fabric_m2.bpo +++ b/BIG/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="3"> +<org.eventb.core.poFile org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="3"> <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)"/> @@ -20,11 +20,11 @@ <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.axiom#_e542gK75Ee6N-vMrFZcPfQ"/> <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTX" org.eventb.core.predicate="gateway_user∈USERS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.axiom#_-6gTUK75Ee6N-vMrFZcPfQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="6"> <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="authenticated_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> <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="auditted_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/> <org.eventb.core.poIdentifier name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> @@ -35,7 +35,7 @@ <org.eventb.core.poPredicate name="received_cross_chain_transactionw" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poSequent name="INITIALISATION/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="3"> + <org.eventb.core.poSequent name="INITIALISATION/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS))∈(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)) → {gateway_user}" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'"/> @@ -44,7 +44,7 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#INITIALISATION\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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="INITIALISATION/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="3"> + <org.eventb.core.poSequent name="INITIALISATION/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS))⇒(∃u⦂USERS·u∈{gateway_user}∧tx ↦ u∈(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)))" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'"/> @@ -53,7 +53,7 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#INITIALISATION\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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="INITIALISATION/inv14;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="3"> + <org.eventb.core.poSequent name="INITIALISATION/inv14;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="{gateway_user ↦ write}∈{gateway_user} ↔ {write}" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_scPcsK8DEe6CsKD2nJu6WQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'"/> @@ -62,7 +62,7 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#INITIALISATION\/inv14;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD3"/> </org.eventb.core.poSequent> - <org.eventb.core.poSequent name="INITIALISATION/inv16;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="3"> + <org.eventb.core.poSequent name="INITIALISATION/inv16;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS))[∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)]⊆dom({gateway_user ↦ write})" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'"/> @@ -71,96 +71,96 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poSequent#INITIALISATION\/inv16;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/> <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="6"> <org.eventb.core.poIdentifier name="authenticated_users'" org.eventb.core.type="ℙ(USERS)"/> <org.eventb.core.poIdentifier name="triggered_events'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/> + <org.eventb.core.poIdentifier name="authenticated_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <org.eventb.core.poIdentifier name="write_grant'" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/> <org.eventb.core.poIdentifier name="received_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/> <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="auditted_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="3"/> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="6"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="3"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="6"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_DMOGsKpFEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_AezaEKmIEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ"/> </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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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="auditted_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction} → authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/> + <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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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∈auditted_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/> + <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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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="(auditted_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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/> + <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="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <org.eventb.core.poIdentifier name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> + <org.eventb.core.poIdentifier name="authenticated_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions'" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> <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.poIdentifier name="auditted_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/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="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="user∈authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_G79oUK76Ee6N-vMrFZcPfQ"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="user ↦ write∈write_grant" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_9p1UoK8EEe6CsKD2nJu6WQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="authenticated_users⊆USERS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_Vz5s8K76Ee6N-vMrFZcPfQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="auditted_transactions∈received_cross_chain_transactions → authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈auditted_transactions)" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="authenticated_transactions∈received_cross_chain_transactions → authenticated_users" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/> + <org.eventb.core.poPredicate name="PRD2" 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.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/> <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="write_grant∈authenticated_users ↔ {write}" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_scPcsK8DEe6CsKD2nJu6WQ"/> - <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="auditted_transactions[received_cross_chain_transactions]⊆dom(write_grant)" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="authenticated_transactions[received_cross_chain_transactions]⊆dom(write_grant)" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/> </org.eventb.core.poPredicateSet> </org.eventb.core.poFile> diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bpr b/BIG/CCTx_Ethereum_Fabric_m2.bpr index c17011a6e0ceda39c2c229656bb76df07f6b885e..5ced3abbbe53da8f67f2cdb1dcdb1e83a12f1288 100644 --- a/BIG/CCTx_Ethereum_Fabric_m2.bpr +++ b/BIG/CCTx_Ethereum_Fabric_m2.bpr @@ -1,32 +1,32 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <org.eventb.core.prFile version="1"> - <org.eventb.core.prProof name="SUBMIT_CROSS_CHAIN_TRANSACTION_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.prProof name="SUBMIT_CROSS_CHAIN_TRANSACTION_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" 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.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="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="p4,p1,p3,p7,p2,p5,p8,p9,p10"> - <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> + <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="p1,p2,p3,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="auditted_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> + <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"/> @@ -37,42 +37,39 @@ <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.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="p13" org.eventb.core.predicate="gateway∈GATEWAYS"/> - <org.eventb.core.prPred name="p3" 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.prPred name="p1" org.eventb.core.predicate="authenticated_transactions∈received_cross_chain_transactions → authenticated_users"/> + <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} → authenticated_users"/> + <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="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.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="p10" org.eventb.core.predicate="¬read=write"/> - <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∈auditted_transactions)"/> + <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="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"> + <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="p20" org.eventb.core.predicate="authenticated_users⊆USERS"/> - <org.eventb.core.prPred name="p4" org.eventb.core.predicate="auditted_transactions∈received_cross_chain_transactions → authenticated_users"/> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="auditted_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="p6" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/> - <org.eventb.core.prPred name="p11" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"> + <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="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="p19" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"/> - <org.eventb.core.prPred name="p7" org.eventb.core.predicate="auditted_transactions[received_cross_chain_transactions]⊆dom(write_grant)"/> - <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> + <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="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> <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.prProof> <org.eventb.core.prProof name="SUBMIT_CROSS_CHAIN_TRANSACTION_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"/> @@ -109,7 +106,7 @@ </org.eventb.core.prAnte> <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> </org.eventb.core.prRule> - <org.eventb.core.prIdent name="auditted_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> + <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"/> @@ -123,10 +120,12 @@ <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="p18" org.eventb.core.predicate="tx∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈auditted_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})"> + <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"/> @@ -135,7 +134,6 @@ <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="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∈auditted_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user})"/> <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}"/> @@ -144,26 +142,25 @@ <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="∀tx⦂CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS·tx∈received_cross_chain_transactions⇒(∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈auditted_transactions)"/> <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="p20" org.eventb.core.predicate="∃u⦂USERS·u∈authenticated_users∧tx ↦ u∈auditted_transactions{target_smart_contract ↦ cross_chain_transaction ↦ user}"> + <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="p4" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/> <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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> - <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> + <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> </org.eventb.core.prProof> <org.eventb.core.prProof name="SUBMIT_CROSS_CHAIN_TRANSACTION_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"/> @@ -191,7 +188,7 @@ </org.eventb.core.prAnte> <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> </org.eventb.core.prRule> - <org.eventb.core.prIdent name="auditted_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/> + <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"/> @@ -206,6 +203,7 @@ <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"/> @@ -213,7 +211,6 @@ <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="p0" org.eventb.core.predicate="(auditted_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="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)"/> @@ -227,14 +224,14 @@ </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.prPred name="p4" org.eventb.core.predicate="auditted_transactions[received_cross_chain_transactions]⊆dom(write_grant)"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> - <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> + <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.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.prSets="CROSS_CHAIN_SMART_CONTRACTS,CROSS_CHAIN_TRANSACTIONS,USERS"> <org.eventb.core.lang name="L"/> diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bps b/BIG/CCTx_Ethereum_Fabric_m2.bps index 27e3d8c236ba8edc6dc60620dee0a57f7faa3b03..8cdeec9697881d4fbb01c902b6eb9c8685d3c253 100644 --- a/BIG/CCTx_Ethereum_Fabric_m2.bps +++ b/BIG/CCTx_Ethereum_Fabric_m2.bps @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <org.eventb.core.psFile> - <org.eventb.core.psStatus name="INITIALISATION/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="3" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="3" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="INITIALISATION/inv14;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="3" org.eventb.core.psManual="false"/> - <org.eventb.core.psStatus name="INITIALISATION/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="3" 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="3" 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="3" 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="3" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="6" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="6" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv14;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="6" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="6" 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="6" 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="6" 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="6" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bum b/BIG/CCTx_Ethereum_Fabric_m2.bum index 5ddaf94a8f54ee0d9f4803bd66f5f1edd01ec90f..fa9c2295e52376a5e00238013b4b9c3125268590 100644 --- a/BIG/CCTx_Ethereum_Fabric_m2.bum +++ b/BIG/CCTx_Ethereum_Fabric_m2.bum @@ -1,42 +1,42 @@ <?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="_F6WMULX-Ee6rT6SCwCdkxA" org.eventb.texttools.text_lastmodified="1705581341813" org.eventb.texttools.text_representation="machine Ethereum_Fabric_m2 refines BIG_m1 sees Ethereum_Fabric_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions authenticated_users auditted_transactions write_grant invariants @inv11; authenticated_users ⊆ USERS @inv12; auditted_transactions ∈ received_cross_chain_transactions → authenticated_users @inv13; ∀ tx · tx ∈ received_cross_chain_transactions ⇒ (∃ u · u ∈ authenticated_users ∧ tx ↦ u ∈ auditted_transactions) // RQ1 @inv14; write_grant ∈ authenticated_users ↔ {write} @inv16; auditted_transactions[received_cross_chain_transactions] ⊆ dom(write_grant) // RQ2 events event INITIALISATION extends INITIALISATION then @act11; authenticated_users ≔ {gateway_user} // ENV2 @act12; auditted_transactions ≔ ∅ @act13; write_grant ≔ {gateway_user ↦ write} // ENV3 end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_ETHEREUM extends SUBSCRIBE_SMART_CONTRACT_EVENTS end event SUBMIT_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM extends SUBMIT_CROSS_CHAIN_TRANSACTION end event PROCESS_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM extends PROCESS_CROSS_CHAIN_TRANSACTION end event LISTEN_SMART_CONTRACT_EVENT_IN_ETHEREUM extends LISTEN_SMART_CONTRACT_EVENT end event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION any user where @grd11; user ∈ authenticated_users // RQ4 @grd12; user ↦ write ∈ write_grant // RQ3 then @act11; auditted_transactions(target_smart_contract ↦ cross_chain_transaction) ≔ user // RQ1 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="_xcITXbllEe6M6tNBC2hE0Q" org.eventb.texttools.text_lastmodified="1705955725575" org.eventb.texttools.text_representation="machine CCTx_Ethereum_Fabric_m2 refines CCTx_Abstract_DLT_m1 sees CCTx_Ethereum_Fabric_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions authenticated_users authenticated_transactions write_grant invariants @inv11; authenticated_users ⊆ USERS // The authenticated users are a subset of all the possible users @inv12; authenticated_transactions ∈ received_cross_chain_transactions → authenticated_users // @inv13; ∀ tx · tx ∈ received_cross_chain_transactions ⇒ (∃ u · u ∈ authenticated_users ∧ tx ↦ u ∈ authenticated_transactions) // RQ1 @inv14; write_grant ∈ authenticated_users ↔ {write} @inv16; authenticated_transactions[received_cross_chain_transactions] ⊆ dom(write_grant) // RQ2 events event INITIALISATION extends INITIALISATION then @act11; authenticated_users ≔ {gateway_user} // The gateway is an authenticated user (RQ2) @act12; authenticated_transactions ≔ ∅ @act13; write_grant ≔ {gateway_user ↦ write} // The gateway has write permissions (RQ3) end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_ETHEREUM extends SUBSCRIBE_SMART_CONTRACT_EVENTS end event INITIATE_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM extends INITIATE_CROSS_CHAIN_TRANSACTION end event PROCESS_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM extends PROCESS_CROSS_CHAIN_TRANSACTION end event LISTEN_SMART_CONTRACT_EVENT_IN_ETHEREUM extends LISTEN_SMART_CONTRACT_EVENT end event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION any user where @grd11; user ∈ authenticated_users // Only allow authenticated users (RQ6) @grd12; user ↦ write ∈ write_grant // Only allow authorized users (RQ7) then @act11; authenticated_transactions(target_smart_contract ↦ cross_chain_transaction) ≔ user // Audit user that submitted a transaction to a smart contract (RQ4) end end " version="5"> <org.eventb.core.refinesMachine name="'" org.eventb.core.target="CCTx_Abstract_DLT_m1"/> <org.eventb.core.seesContext name="_MuSzUK76Ee6N-vMrFZcPfQ" org.eventb.core.target="CCTx_Ethereum_Fabric_c2"/> - <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqR" 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="_F6WMQLX-Ee6rT6SCwCdkxA"> - <org.eventb.core.action name="_ZLkMUK76Ee6N-vMrFZcPfQ" org.eventb.core.assignment="authenticated_users ≔ {gateway_user}" org.eventb.core.comment="ENV2" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_F6WMPbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.action name="_51HmgK78Ee6N-vMrFZcPfQ" org.eventb.core.assignment="auditted_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act12;" org.eventb.emf.persistence.emf_id="_F6WMPrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.action name="_3tsi0K8DEe6CsKD2nJu6WQ" org.eventb.core.assignment="write_grant ≔ {gateway_user ↦ write}" org.eventb.core.comment="ENV3" org.eventb.core.generated="false" org.eventb.core.label="act13;" org.eventb.emf.persistence.emf_id="_F6WMP7X-Ee6rT6SCwCdkxA"/> + <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqR" 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="_xcHsULllEe6M6tNBC2hE0Q"> + <org.eventb.core.action name="_ZLkMUK76Ee6N-vMrFZcPfQ" org.eventb.core.assignment="authenticated_users ≔ {gateway_user}" org.eventb.core.comment="The gateway is an authenticated user (RQ2)" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_xcHsTbllEe6M6tNBC2hE0Q"/> + <org.eventb.core.action name="_51HmgK78Ee6N-vMrFZcPfQ" org.eventb.core.assignment="authenticated_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act12;" org.eventb.emf.persistence.emf_id="_xcHsTrllEe6M6tNBC2hE0Q"/> + <org.eventb.core.action name="_3tsi0K8DEe6CsKD2nJu6WQ" org.eventb.core.assignment="write_grant ≔ {gateway_user ↦ write}" org.eventb.core.comment="The gateway has write permissions (RQ3)" org.eventb.core.generated="false" org.eventb.core.label="act13;" org.eventb.emf.persistence.emf_id="_xcHsT7llEe6M6tNBC2hE0Q"/> </org.eventb.core.event> - <org.eventb.core.event name="_F6qVQLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_F6WMQrX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_F6qVQLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_xcHsUrllEe6M6tNBC2hE0Q"> <org.eventb.core.refinesEvent name="_F6qVQbX-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS"/> </org.eventb.core.event> - <org.eventb.core.event name="_F6qVQrX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_F6WMRLX-Ee6rT6SCwCdkxA"> - <org.eventb.core.refinesEvent name="_F6qVQ7X-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBMIT_CROSS_CHAIN_TRANSACTION"/> + <org.eventb.core.event name="_XcWwsLk7Ee6otoREOj7KsQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_xcITUbllEe6M6tNBC2hE0Q"> + <org.eventb.core.refinesEvent name="_XcWwsbk7Ee6otoREOj7KsQ" org.eventb.core.target="INITIATE_CROSS_CHAIN_TRANSACTION"/> </org.eventb.core.event> - <org.eventb.core.event name="_F6qVRLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_F6WMRrX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_F6qVRLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_xcITU7llEe6M6tNBC2hE0Q"> <org.eventb.core.refinesEvent name="_F6qVRbX-Ee6rT6SCwCdkxA" org.eventb.core.target="PROCESS_CROSS_CHAIN_TRANSACTION"/> </org.eventb.core.event> - <org.eventb.core.event name="_F6qVRrX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_F6WMSLX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_F6qVRrX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_ETHEREUM" org.eventb.emf.persistence.emf_id="_xcITVbllEe6M6tNBC2hE0Q"> <org.eventb.core.refinesEvent name="_F6qVR7X-Ee6rT6SCwCdkxA" org.eventb.core.target="LISTEN_SMART_CONTRACT_EVENT"/> </org.eventb.core.event> - <org.eventb.core.event name="_F6qVSLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC" org.eventb.emf.persistence.emf_id="_F6WMTrX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_F6qVSLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC" org.eventb.emf.persistence.emf_id="_xcITW7llEe6M6tNBC2hE0Q"> <org.eventb.core.refinesEvent name="_F6q8ULX-Ee6rT6SCwCdkxA" org.eventb.core.target="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION"/> - <org.eventb.core.action name="_OatxgK79Ee6N-vMrFZcPfQ" org.eventb.core.assignment="auditted_transactions(target_smart_contract ↦ cross_chain_transaction) ≔ user" org.eventb.core.comment="RQ1" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_F6WMTbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_G79oUK76Ee6N-vMrFZcPfQ" org.eventb.core.comment="RQ4" org.eventb.core.generated="false" org.eventb.core.label="grd11;" org.eventb.core.predicate="user ∈ authenticated_users" org.eventb.emf.persistence.emf_id="_F6WMS7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_9p1UoK8EEe6CsKD2nJu6WQ" org.eventb.core.comment="RQ3" org.eventb.core.generated="false" org.eventb.core.label="grd12;" org.eventb.core.predicate="user ↦ write ∈ write_grant" org.eventb.emf.persistence.emf_id="_F6WMTLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_kwOZ8K8IEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.identifier="user" org.eventb.emf.persistence.emf_id="_F6WMSrX-Ee6rT6SCwCdkxA"/> + <org.eventb.core.action name="_OatxgK79Ee6N-vMrFZcPfQ" org.eventb.core.assignment="authenticated_transactions(target_smart_contract ↦ cross_chain_transaction) ≔ user" org.eventb.core.comment="Audit user that submitted a transaction to a smart contract (RQ4)" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_xcITWrllEe6M6tNBC2hE0Q"/> + <org.eventb.core.guard name="_G79oUK76Ee6N-vMrFZcPfQ" org.eventb.core.comment="Only allow authenticated users (RQ6)" org.eventb.core.generated="false" org.eventb.core.label="grd11;" org.eventb.core.predicate="user ∈ authenticated_users" org.eventb.emf.persistence.emf_id="_xcITWLllEe6M6tNBC2hE0Q"/> + <org.eventb.core.guard name="_9p1UoK8EEe6CsKD2nJu6WQ" org.eventb.core.comment="Only allow authorized users (RQ7)" org.eventb.core.generated="false" org.eventb.core.label="grd12;" org.eventb.core.predicate="user ↦ write ∈ write_grant" org.eventb.emf.persistence.emf_id="_xcITWbllEe6M6tNBC2hE0Q"/> + <org.eventb.core.parameter name="_kwOZ8K8IEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.identifier="user" org.eventb.emf.persistence.emf_id="_xcITV7llEe6M6tNBC2hE0Q"/> </org.eventb.core.event> - <org.eventb.core.invariant name="_Vz5s8K76Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.label="inv11;" org.eventb.core.predicate="authenticated_users ⊆ USERS" org.eventb.emf.persistence.emf_id="_F6WMOLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.invariant name="_MgekUK77Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.label="inv12;" org.eventb.core.predicate="auditted_transactions ∈ received_cross_chain_transactions → authenticated_users" org.eventb.emf.persistence.emf_id="_F6WMObX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.invariant name="_6-1AkK78Ee6N-vMrFZcPfQ" org.eventb.core.comment="RQ1" org.eventb.core.generated="false" org.eventb.core.label="inv13;" org.eventb.core.predicate="∀ tx · tx ∈ received_cross_chain_transactions ⇒ (∃ u · u ∈ authenticated_users ∧ tx ↦ u ∈ auditted_transactions)" org.eventb.emf.persistence.emf_id="_F6WMOrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.invariant name="_scPcsK8DEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.label="inv14;" org.eventb.core.predicate="write_grant ∈ authenticated_users ↔ {write}" org.eventb.emf.persistence.emf_id="_F6WMO7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.invariant name="_2EqLoK8HEe6CsKD2nJu6WQ" org.eventb.core.comment="RQ2" org.eventb.core.generated="false" org.eventb.core.label="inv16;" org.eventb.core.predicate="auditted_transactions[received_cross_chain_transactions] ⊆ dom(write_grant)" org.eventb.emf.persistence.emf_id="_F6WMPLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_F6WMMLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_F6WMMbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_F6WMMrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_F6WMM7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_F6WMNLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_Vz67EK76Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.identifier="authenticated_users" org.eventb.emf.persistence.emf_id="_F6WMNbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_MgfLYK77Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.identifier="auditted_transactions" org.eventb.emf.persistence.emf_id="_F6WMNrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_FuVEoK8HEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.identifier="write_grant" org.eventb.emf.persistence.emf_id="_F6WMN7X-Ee6rT6SCwCdkxA"/> + <org.eventb.core.invariant name="_Vz5s8K76Ee6N-vMrFZcPfQ" org.eventb.core.comment="The authenticated users are a subset of all the possible users" org.eventb.core.generated="false" org.eventb.core.label="inv11;" org.eventb.core.predicate="authenticated_users ⊆ USERS" org.eventb.emf.persistence.emf_id="_xcHsSLllEe6M6tNBC2hE0Q"/> + <org.eventb.core.invariant name="_MgekUK77Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.label="inv12;" org.eventb.core.predicate="authenticated_transactions ∈ received_cross_chain_transactions → authenticated_users" org.eventb.emf.persistence.emf_id="_xcHsSbllEe6M6tNBC2hE0Q"/> + <org.eventb.core.invariant name="_6-1AkK78Ee6N-vMrFZcPfQ" org.eventb.core.comment="RQ1" org.eventb.core.generated="false" org.eventb.core.label="inv13;" org.eventb.core.predicate="∀ tx · tx ∈ received_cross_chain_transactions ⇒ (∃ u · u ∈ authenticated_users ∧ tx ↦ u ∈ authenticated_transactions)" org.eventb.emf.persistence.emf_id="_xcHsSrllEe6M6tNBC2hE0Q"/> + <org.eventb.core.invariant name="_scPcsK8DEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.label="inv14;" org.eventb.core.predicate="write_grant ∈ authenticated_users ↔ {write}" org.eventb.emf.persistence.emf_id="_xcHsS7llEe6M6tNBC2hE0Q"/> + <org.eventb.core.invariant name="_2EqLoK8HEe6CsKD2nJu6WQ" org.eventb.core.comment="RQ2" org.eventb.core.generated="false" org.eventb.core.label="inv16;" org.eventb.core.predicate="authenticated_transactions[received_cross_chain_transactions] ⊆ dom(write_grant)" org.eventb.emf.persistence.emf_id="_xcHsTLllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_xcHsQLllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_xcHsQbllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_xcHsQrllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_xcHsQ7llEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_xcHsRLllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_Vz67EK76Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.identifier="authenticated_users" org.eventb.emf.persistence.emf_id="_xcHsRbllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_EElgYLlfEe6otoREOj7KsQ" org.eventb.core.generated="false" org.eventb.core.identifier="authenticated_transactions" org.eventb.emf.persistence.emf_id="_xcHsRrllEe6M6tNBC2hE0Q"/> + <org.eventb.core.variable name="_FuVEoK8HEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.identifier="write_grant" org.eventb.emf.persistence.emf_id="_xcHsR7llEe6M6tNBC2hE0Q"/> </org.eventb.core.machineFile> diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bcm b/BIG/CCTx_Fabric_Ethereum_m2.bcm index 15fa32f88b500bd6c320add55a3dc3e121a00ad6..f386d9e507f501a2252266abb74681f77a164846 100644 --- a/BIG/CCTx_Fabric_Ethereum_m2.bcm +++ b/BIG/CCTx_Fabric_Ethereum_m2.bcm @@ -28,9 +28,9 @@ <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/> - <org.eventb.core.scVariable name="balances" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_DPQj0KsaEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_F0hv0LlmEe6M6tNBC2hE0Q" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_H2zkgKpbEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.scVariable name="gateway_pending_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.variable#_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -42,19 +42,19 @@ <org.eventb.core.scAction name=")" org.eventb.core.assignment="subscriptions ≔ ∅ ⦂ ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)" org.eventb.core.label="act3;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_mv5M0KpAEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_8Ty9sKpBEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_J6KjYKpbEe6I4bA9GxwhqQ"/> - <org.eventb.core.scAction name="," org.eventb.core.assignment="balances ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_BrsTMLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_BrsTMLR5Ee6ab9MA5fTFUw"/> </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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4XcLX-Ee6rT6SCwCdkxA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4XcLX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_GI4XcbX-Ee6rT6SCwCdkxA"/> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_a_IQYKmDEe6I4bA9GxwhqQ"/> </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="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_7Pu14LX4Ee6ab_EHIz4SJQ"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_7Pu14LX4Ee6ab_EHIz4SJQ|org.eventb.core.refinesEvent#_7Pu14bX4Ee6ab_EHIz4SJQ"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> - <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> + <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_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_ZAFNQLk7Ee6otoREOj7KsQ"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_ZAFNQLk7Ee6otoREOj7KsQ|org.eventb.core.refinesEvent#_ZAF0ULk7Ee6otoREOj7KsQ"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> </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="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_7Pu14rX4Ee6ab_EHIz4SJQ"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm|org.eventb.core.scMachineFile#CCTx_Abstract_DLT_m1|org.eventb.core.scEvent#received_cross_chain_transactionw" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_7Pu14rX4Ee6ab_EHIz4SJQ|org.eventb.core.refinesEvent#_7Pu147X4Ee6ab_EHIz4SJQ"/> @@ -81,35 +81,35 @@ <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQKpbEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQapbEe6I4bA9GxwhqQ"/> <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.parameter#_tUzFcapaEe6I4bA9GxwhqQ" 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(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="balances(gateway_address)≥fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Z_lpALSGEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_LUARQbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/> - <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="balances ≔ balances{gateway_address ↦ balances(gateway_address) − fee}" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> </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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA"> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_3N1_ErR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∉dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_Mn_nsbSEEe6FipXA1f8GIg" org.eventb.core.type="ADDRESS"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="balances ≔ balances∪{address ↦ 0}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="accounts ≔ accounts∪{address ↦ 0}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/> </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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA"> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scParameter name="amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/> - <org.eventb.core.scParameter name="address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_1UeBYbSEEe6FipXA1f8GIg" org.eventb.core.type="ADDRESS"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="balances ≔ balances{address ↦ balances(address)+amount}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ"> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> + <org.eventb.core.scParameter name="amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.parameter#_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/> + <org.eventb.core.scParameter name="address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.parameter#_1UeBYbSEEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> </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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA"> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="balances(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCIbWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_YKVUsLWQEe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="," org.eventb.core.label="grd6;" org.eventb.core.predicate="({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> <org.eventb.core.scParameter name="user_address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_FP-uELWREe6ab_EHIz4SJQ" org.eventb.core.type="ADDRESS"/> <org.eventb.core.scParameter name="validator_fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_CkNCIrWCEe6ab_EHIz4SJQ" org.eventb.core.type="ℤ"/> <org.eventb.core.scParameter name="transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_Ovz7ALWQEe6ab_EHIz4SJQ" org.eventb.core.type="ℤ"/> - <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="balances ≔ ({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> </org.eventb.core.scEvent> </org.eventb.core.scMachineFile> diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bpo b/BIG/CCTx_Fabric_Ethereum_m2.bpo index b8913290a1f586c421286900b135de543db34602..c694960ff7ee9a119f44cb0ef45306037ab91ac7 100644 --- a/BIG/CCTx_Fabric_Ethereum_m2.bpo +++ b/BIG/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="3"> +<org.eventb.core.poFile org.eventb.core.poStamp="7"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="3"> <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,9 +18,9 @@ <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA"/> <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTX" org.eventb.core.predicate="initial_deposit>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy4mkLR4Ee64F9fr4UDNUA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="3"> - <org.eventb.core.poIdentifier name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="6"> <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)"/> <org.eventb.core.poIdentifier name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -31,7 +31,7 @@ <org.eventb.core.poPredicate name="received_cross_chain_transactionw" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ"/> </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="3"> + <org.eventb.core.poSequent name="INITIALISATION/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'"/> @@ -40,170 +40,170 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="6"> <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="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="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="/BIG/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="3"/> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/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="6"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="3"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/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="6"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_DMOGsKpFEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_AezaEKmIEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ"/> </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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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="balances{gateway_address ↦ balances(gateway_address) − fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts{gateway_address ↦ accounts(gateway_address) − fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA"/> <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="/BIG/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="3"> + <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transactionycross_chain_transactioq" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/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="3"> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="balances(gateway_address)≥fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/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="6"> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Z_lpALSGEe6FipXA1f8GIg"/> </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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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="balances∪{address ↦ 0}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts∪{address ↦ 0}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> - <org.eventb.core.poIdentifier name="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="3"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_3N1_ErR5Ee6ab9MA5fTFUw"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg"/> </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="3"> + <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="7"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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="balances{address ↦ balances(address)+amount}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="accounts{address ↦ accounts(address)+amount}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/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="3"> + <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="7"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> - <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> + <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <org.eventb.core.poIdentifier name="amount" org.eventb.core.type="ℤ"/> - <org.eventb.core.poIdentifier name="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <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="/BIG/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="3"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/BIG/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="7"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg"/> </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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="user_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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(balances)∧balances∈ADDRESS ⇸ ℤ∧user_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA"/> <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/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="3"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/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(balances)∧balances∈ADDRESS ⇸ ℤ∧user_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(accounts)∧accounts∈ADDRESS ⇸ ℤ∧user_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="3"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction|" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <org.eventb.core.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/> - <org.eventb.core.poIdentifier name="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="/BIG/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="3"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|'" org.eventb.core.parentSet="/BIG/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="6"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|+" org.eventb.core.parentSet="/BIG/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="3"> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="balances(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicateSet name="EVTHYPreceived_cross_chain_transaction|+" org.eventb.core.parentSet="/BIG/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="6"> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCIbWCEe6ab_EHIz4SJQ"/> <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_YKVUsLWQEe6ab_EHIz4SJQ"/> - <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/BIG/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="3"> - <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/BIG/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="6"> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="3"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="6"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> </org.eventb.core.poPredicateSet> </org.eventb.core.poFile> diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bpr b/BIG/CCTx_Fabric_Ethereum_m2.bpr index 4fc6e190f832cec81f5e0e2f5ebf927ca9f2e962..b32e513064dd21ff2a53d9127e123039d6a69630 100644 --- a/BIG/CCTx_Fabric_Ethereum_m2.bpr +++ b/BIG/CCTx_Fabric_Ethereum_m2.bpr @@ -1435,25 +1435,25 @@ </org.eventb.core.prProof> <org.eventb.core.prProof name="SUBMIT_CROSS_CHAIN_TRANSACTION_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.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="p1"/> + <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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="balances∈ADDRESS ⇸ ℕ"/> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway_address∈dom(balances)"/> - <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p4" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <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_CROSS_CHAIN_TRANSACTION_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"/> @@ -1468,24 +1468,25 @@ <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="p3,p1,p4,p5,p6,p7,p2"> + <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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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(balances)"/> + <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)"/> @@ -1496,29 +1497,28 @@ <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="balances∈ADDRESS ⇸ ℕ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee>0"/> + <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="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="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="p0" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address) − fee}∈ADDRESS ⇸ ℕ"/> - <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances(gateway_address)≥fee"/> - <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + <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_CROSS_CHAIN_TRANSACTION_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"/> @@ -1531,22 +1531,22 @@ </org.eventb.core.prRule> </org.eventb.core.prAnte> </org.eventb.core.prRule> - <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="p0" org.eventb.core.predicate="gateway_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(balances)"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <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.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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> </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="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> + <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"/> @@ -1559,15 +1559,15 @@ <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="p2,p1,p4"> + <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="balances" 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)"/> @@ -1579,8 +1579,8 @@ <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="address∉dom(balances)"/> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="balances∪{address ↦ 0}∈ADDRESS ⇸ ℕ"/> + <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)"/> @@ -1590,16 +1590,16 @@ <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="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/> <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="p2" org.eventb.core.predicate="initial_deposit>0"/> + <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)"/> @@ -1614,10 +1614,10 @@ <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="p4" org.eventb.core.predicate="¬address∈dom(balances)"/> - <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.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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <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="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"/> @@ -1632,15 +1632,16 @@ <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,p1,p4,p3,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="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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <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)"/> @@ -1650,8 +1651,7 @@ <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="address∈dom(balances)"/> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="balances{address ↦ balances(address)+amount}∈ADDRESS ⇸ ℕ"/> + <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)"/> @@ -1666,7 +1666,6 @@ <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="balances∈ADDRESS ⇸ ℕ"/> <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> @@ -1676,63 +1675,64 @@ <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="amount>0"/> + <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="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> + <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="p2"> + <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="p1"/> + <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.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="address∈dom(balances)"/> - <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p4" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <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="p2"> + <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="p1"/> + <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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/> - <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="user_address∈dom(balances)"/> - <org.eventb.core.prPred name="p4" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/> + <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"/> @@ -1745,28 +1745,28 @@ </org.eventb.core.prRule> </org.eventb.core.prAnte> </org.eventb.core.prRule> - <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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(balances)∧balances∈ADDRESS ⇸ ℤ∧user_address∈dom(balances)"/> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(balances)"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p3" org.eventb.core.predicate="user_address∈dom(balances)"/> - <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.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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> </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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ"/> + <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"> @@ -1780,17 +1780,17 @@ </org.eventb.core.prRule> </org.eventb.core.prAnte> </org.eventb.core.prRule> - <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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(balances)∧balances∈ADDRESS ⇸ ℤ∧user_address∈dom(balances)"/> - <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(balances)"/> - <org.eventb.core.prPred name="p2" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/> - <org.eventb.core.prPred name="p3" org.eventb.core.predicate="user_address∈dom(balances)"/> - <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.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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> + <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> </org.eventb.core.prProof> </org.eventb.core.prFile> diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bps b/BIG/CCTx_Fabric_Ethereum_m2.bps index 22b730481c8abe5bcad7daaf1f48bf5e03b59775..69c90d5ef3e849e0937ef211b9321125e2c5195b 100644 --- a/BIG/CCTx_Fabric_Ethereum_m2.bps +++ b/BIG/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="3" 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="3" 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="3" 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="3" 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="3" 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="3" 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="3" 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="3" 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="3" 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="3" 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="3" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="6" 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="6" 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="6" 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="6" 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="6" 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="7" 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="7" 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="6" 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="6" 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="6" 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="6" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bum b/BIG/CCTx_Fabric_Ethereum_m2.bum index 2ce640ce54d126fa0f7bd1093b5729f7f66b1ddb..ee705b4063f86241ff401aa3ff2a78511a84bb5a 100644 --- a/BIG/CCTx_Fabric_Ethereum_m2.bum +++ b/BIG/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="_GG6Bi7X-Ee6rT6SCwCdkxA" org.eventb.texttools.text_lastmodified="1705581343130" org.eventb.texttools.text_representation="machine Fabric_Ethereum_m2 refines BIG_m1 sees Fabric_Ethereum_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions balances invariants @inv11; balances ∈ ADDRESS ⇸ ℕ events event INITIALISATION extends INITIALISATION then @act11; balances ≔ ∅ end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS end event SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends SUBMIT_CROSS_CHAIN_TRANSACTION end event PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends PROCESS_CROSS_CHAIN_TRANSACTION end event LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC extends LISTEN_SMART_CONTRACT_EVENT end event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION any fee where @grd11; gateway_address ∈ dom(balances) @grd12; balances(gateway_address) ≥ fee @grd13; fee > 0 then @act11; balances(gateway_address) ≔ balances(gateway_address) − fee end event CREATE_ADDRESS_IN_ETHEREUM any address where @grd1; address ∈ ADDRESS @grd2; address ∉ dom(balances) then @act1; balances ≔ balances ∪ {address ↦ 0} end event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM any amount address where @grd1; amount > 0 @grd2; address ∈ dom(balances) then @act1; balances(address) ≔ balances(address) + amount end event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM any validator_fee user_address transfer_amount where @grd1; user_address ∈ dom(balances) @grd2; balances(user_address) ≥ validator_fee + transfer_amount @grd3; validator_fee > 0 @grd4; transfer_amount > 0 @grd5; gateway_address ∈ dom(balances) @grd6; ({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ then @act1; balances ≔ ({user_address, gateway_address} ⩤ balances) ∪ 	{gateway_address ↦ balances(gateway_address) + transfer_amount} ∪ 	{user_address ↦ balances(user_address) − transfer_amount − validator_fee} 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="_tfnYOboaEe6Z_67r8-UisA" org.eventb.texttools.text_lastmodified="1706033438011" 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_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends INITIATE_CROSS_CHAIN_TRANSACTION end event PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends PROCESS_CROSS_CHAIN_TRANSACTION end event LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC extends LISTEN_SMART_CONTRACT_EVENT end event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION 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="_wnFu0KsZEe6I4bA9GxwhqQ" org.eventb.core.target="CCTx_Fabric_Ethereum_c2"/> - <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqR" 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="_GG5aeLX-Ee6rT6SCwCdkxA"> - <org.eventb.core.action name="_BrsTMLR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="balances ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_GG5ad7X-Ee6rT6SCwCdkxA"/> + <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqR" 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="_tfmKGLoaEe6Z_67r8-UisA"> + <org.eventb.core.action name="_BrsTMLR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="accounts ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_tfmKF7oaEe6Z_67r8-UisA"/> </org.eventb.core.event> - <org.eventb.core.event name="_GI4XcLX-Ee6rT6SCwCdkxA" 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="_GG5aerX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GI4XcLX-Ee6rT6SCwCdkxA" 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="_tfmKGroaEe6Z_67r8-UisA"> <org.eventb.core.refinesEvent name="_GI4XcbX-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS"/> </org.eventb.core.event> - <org.eventb.core.event name="_7Pu14LX4Ee6ab_EHIz4SJQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="_GG5afLX-Ee6rT6SCwCdkxA"> - <org.eventb.core.refinesEvent name="_7Pu14bX4Ee6ab_EHIz4SJQ" org.eventb.core.target="SUBMIT_CROSS_CHAIN_TRANSACTION"/> + <org.eventb.core.event name="_ZAFNQLk7Ee6otoREOj7KsQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="_tfmKHLoaEe6Z_67r8-UisA"> + <org.eventb.core.refinesEvent name="_ZAF0ULk7Ee6otoREOj7KsQ" org.eventb.core.target="INITIATE_CROSS_CHAIN_TRANSACTION"/> </org.eventb.core.event> - <org.eventb.core.event name="_7Pu14rX4Ee6ab_EHIz4SJQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="_GG5afrX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_7Pu14rX4Ee6ab_EHIz4SJQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="_tfmKHroaEe6Z_67r8-UisA"> <org.eventb.core.refinesEvent name="_7Pu147X4Ee6ab_EHIz4SJQ" org.eventb.core.target="PROCESS_CROSS_CHAIN_TRANSACTION"/> </org.eventb.core.event> - <org.eventb.core.event name="_GI4-gLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_GG5agLX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GI4-gLX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_tfmKILoaEe6Z_67r8-UisA"> <org.eventb.core.refinesEvent name="_GI4-gbX-Ee6rT6SCwCdkxA" org.eventb.core.target="LISTEN_SMART_CONTRACT_EVENT"/> </org.eventb.core.event> - <org.eventb.core.event name="_GI4-grX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="_GG5ah7X-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GI4-grX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="_tfmKJ7oaEe6Z_67r8-UisA"> <org.eventb.core.refinesEvent name="_GI4-g7X-Ee6rT6SCwCdkxA" org.eventb.core.target="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION"/> - <org.eventb.core.action name="_LT_qMLR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="balances(gateway_address) ≔ balances(gateway_address) − fee" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_GG5ahrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_xor2sLSFEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd11;" org.eventb.core.predicate="gateway_address ∈ dom(balances)" org.eventb.emf.persistence.emf_id="_GG5ag7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_m9IJYLR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd12;" org.eventb.core.predicate="balances(gateway_address) ≥ fee" org.eventb.emf.persistence.emf_id="_GG5ahLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_Z_lpALSGEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee > 0" org.eventb.emf.persistence.emf_id="_GG5ahbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_LUARQbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="fee" org.eventb.emf.persistence.emf_id="_GG5agrX-Ee6rT6SCwCdkxA"/> - </org.eventb.core.event> - <org.eventb.core.event name="_GI5lkLX-Ee6rT6SCwCdkxA" 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="_GG5ajbX-Ee6rT6SCwCdkxA"> - <org.eventb.core.action name="_3N1_EbR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="balances ≔ balances ∪ {address ↦ 0}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_GG5ajLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_3N1_ErR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_GG5airX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_Mn_nsLSEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="address ∉ dom(balances)" org.eventb.emf.persistence.emf_id="_GG5ai7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_Mn_nsbSEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_GG5aibX-Ee6rT6SCwCdkxA"/> - </org.eventb.core.event> - <org.eventb.core.event name="_GI6MoLX-Ee6rT6SCwCdkxA" 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="_GG5ak7X-Ee6rT6SCwCdkxA"> - <org.eventb.core.action name="_Mn_nsrSEEe6FipXA1f8GIg" org.eventb.core.assignment="balances(address) ≔ balances(address) + amount" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_GG5akrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_Mn_ns7SEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount > 0" org.eventb.emf.persistence.emf_id="_GG5akLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_QwdccLSFEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="address ∈ dom(balances)" org.eventb.emf.persistence.emf_id="_GG5akbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="amount" org.eventb.emf.persistence.emf_id="_GG5ajrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_1UeBYbSEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_GG5aj7X-Ee6rT6SCwCdkxA"/> - </org.eventb.core.event> - <org.eventb.core.event name="_GI6zsLX-Ee6rT6SCwCdkxA" 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="_GG6BirX-Ee6rT6SCwCdkxA"> - <org.eventb.core.action name="_K_FqILWKEe6ab_EHIz4SJQ" org.eventb.core.assignment="balances ≔ ({user_address, gateway_address} ⩤ balances) ∪ 	{gateway_address ↦ balances(gateway_address) + transfer_amount} ∪ 	{user_address ↦ balances(user_address) − transfer_amount − validator_fee}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_GG6BibX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_CkMbErWCEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address ∈ dom(balances)" org.eventb.emf.persistence.emf_id="_GG6Bg7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_CkNCILWCEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="balances(user_address) ≥ validator_fee + transfer_amount" org.eventb.emf.persistence.emf_id="_GG6BhLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_CkNCIbWCEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="validator_fee > 0" org.eventb.emf.persistence.emf_id="_GG6BhbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_YKVUsLWQEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd4;" org.eventb.core.predicate="transfer_amount > 0" org.eventb.emf.persistence.emf_id="_GG6BhrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_jWU2kLWREe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address ∈ dom(balances)" org.eventb.emf.persistence.emf_id="_GG6Bh7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.guard name="_JOri0LWSEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd6;" org.eventb.core.predicate="({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.emf.persistence.emf_id="_GG6BiLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_CkNCIrWCEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="validator_fee" org.eventb.emf.persistence.emf_id="_GG6BgLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_FP-uELWREe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="user_address" org.eventb.emf.persistence.emf_id="_GG6BgbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.parameter name="_Ovz7ALWQEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="transfer_amount" org.eventb.emf.persistence.emf_id="_GG6BgrX-Ee6rT6SCwCdkxA"/> - </org.eventb.core.event> - <org.eventb.core.invariant name="_BruvcLR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="inv11;" org.eventb.core.predicate="balances ∈ ADDRESS ⇸ ℕ" org.eventb.emf.persistence.emf_id="_GG5adrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_GG5acLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_GG5acbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_GG5acrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_GG5ac7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_GG5adLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_DPQj0KsaEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="balances" org.eventb.emf.persistence.emf_id="_GG5adbX-Ee6rT6SCwCdkxA"/> + <org.eventb.core.action name="_LT_qMLR5Ee6ab9MA5fTFUw" 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="_tfmKJroaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_xor2sLSFEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd11;" org.eventb.core.predicate="gateway_address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_tfmKI7oaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_m9IJYLR5Ee6ab9MA5fTFUw" 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="_tfmKJLoaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_Z_lpALSGEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee > 0" org.eventb.emf.persistence.emf_id="_tfmKJboaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_LUARQbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="fee" org.eventb.emf.persistence.emf_id="_tfmKIroaEe6Z_67r8-UisA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_GI5lkLX-Ee6rT6SCwCdkxA" 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="_tfmxJLoaEe6Z_67r8-UisA"> + <org.eventb.core.action name="_3N1_EbR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="accounts ≔ accounts ∪ {address ↦ 0}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_tfmxI7oaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_3N1_ErR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_tfmxIboaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_Mn_nsLSEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="address ∉ dom(accounts)" org.eventb.emf.persistence.emf_id="_tfmxIroaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_Mn_nsbSEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_tfmxILoaEe6Z_67r8-UisA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_d33iILloEe6mA4ET_9OgqQ" 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="_tfmxKroaEe6Z_67r8-UisA"> + <org.eventb.core.action name="_Mn_nsrSEEe6FipXA1f8GIg" 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="_tfmxKboaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_Mn_ns7SEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount > 0" org.eventb.emf.persistence.emf_id="_tfmxJ7oaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_QwdccLSFEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="address ∈ dom(accounts)" org.eventb.emf.persistence.emf_id="_tfmxKLoaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="amount" org.eventb.emf.persistence.emf_id="_tfmxJboaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_1UeBYbSEEe6FipXA1f8GIg" org.eventb.core.generated="false" org.eventb.core.identifier="address" org.eventb.emf.persistence.emf_id="_tfmxJroaEe6Z_67r8-UisA"/> + </org.eventb.core.event> + <org.eventb.core.event name="_GI6zsLX-Ee6rT6SCwCdkxA" 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="_tfnYOLoaEe6Z_67r8-UisA"> + <org.eventb.core.action name="_K_FqILWKEe6ab_EHIz4SJQ" 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="_tfnYN7oaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_CkMbErWCEe6ab_EHIz4SJQ" 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="_tfnYMboaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_CkNCILWCEe6ab_EHIz4SJQ" 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="_tfnYMroaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_CkNCIbWCEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="validator_fee > 0" org.eventb.emf.persistence.emf_id="_tfnYM7oaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_YKVUsLWQEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="grd4;" org.eventb.core.predicate="transfer_amount > 0" org.eventb.emf.persistence.emf_id="_tfnYNLoaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_jWU2kLWREe6ab_EHIz4SJQ" 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="_tfnYNboaEe6Z_67r8-UisA"/> + <org.eventb.core.guard name="_JOri0LWSEe6ab_EHIz4SJQ" 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="_tfnYNroaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_CkNCIrWCEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="validator_fee" org.eventb.emf.persistence.emf_id="_tfmxK7oaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_FP-uELWREe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="user_address" org.eventb.emf.persistence.emf_id="_tfmxLLoaEe6Z_67r8-UisA"/> + <org.eventb.core.parameter name="_Ovz7ALWQEe6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="transfer_amount" org.eventb.emf.persistence.emf_id="_tfnYMLoaEe6Z_67r8-UisA"/> + </org.eventb.core.event> + <org.eventb.core.invariant name="_BruvcLR5Ee6ab9MA5fTFUw" 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="_tfmKFroaEe6Z_67r8-UisA"/> + <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_tfmKELoaEe6Z_67r8-UisA"/> + <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_tfmKEboaEe6Z_67r8-UisA"/> + <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_tfmKEroaEe6Z_67r8-UisA"/> + <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_tfmKE7oaEe6Z_67r8-UisA"/> + <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_tfmKFLoaEe6Z_67r8-UisA"/> + <org.eventb.core.variable name="_F0hv0LlmEe6M6tNBC2hE0Q" org.eventb.core.generated="false" org.eventb.core.identifier="accounts" org.eventb.emf.persistence.emf_id="_tfmKFboaEe6Z_67r8-UisA"/> </org.eventb.core.machineFile> diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm b/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm index bc53e08babcc3f29d65350e755eeae0d548a60a2..c4f6cffb836c3bf040caa775e63b27058f33e530 100644 --- a/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm +++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm @@ -28,10 +28,10 @@ <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scInvariant name="CCTx_Fabric_Ethereum_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_jJxtELX5Ee6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scVariable name="balances" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_DPQj0KsaEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <org.eventb.core.scVariable name="triggered_events" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_15j2ALlnEe6mA4ET_9OgqQ" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_H2zkgKpbEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.scVariable name="gateway_pending_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -44,7 +44,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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_mv5M0KpAEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_8Ty9sKpBEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_J6KjYKpbEe6I4bA9GxwhqQ"/> - <org.eventb.core.scAction name="," org.eventb.core.assignment="balances ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_BrsTMLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.scAction name="," org.eventb.core.assignment="accounts ≔ ∅ ⦂ ℙ(ADDRESS×ℤ)" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR|org.eventb.core.action#_BrsTMLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.scAction name="-" org.eventb.core.assignment="estimated_cross_chain_cost ≔ 0" org.eventb.core.label="act31;" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_wnFu0KsZEe6I4bA9GxwhqR|org.eventb.core.action#_ohzhsLX5Ee6ab_EHIz4SJQ"/> </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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GToO5rX-Ee6rT6SCwCdkxA"> @@ -52,12 +52,12 @@ <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_a_IQYKmDEe6I4bA9GxwhqQ"/> </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="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_wnFu0KsZEe6I4bA9GxwhqT"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_wnFu0KsZEe6I4bA9GxwhqT|org.eventb.core.refinesEvent#'"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> - <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> + <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_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_aIltcLk7Ee6otoREOj7KsQ"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_aIltcLk7Ee6otoREOj7KsQ|org.eventb.core.refinesEvent#_aIltcbk7Ee6otoREOj7KsQ"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.parameter#_SAx1UqmDEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/> </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="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_wnFu0KsZEe6I4bA9GxwhqU"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_wnFu0KsZEe6I4bA9GxwhqU|org.eventb.core.refinesEvent#'"/> @@ -81,12 +81,12 @@ <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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTo18rX-Ee6rT6SCwCdkxA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTo18rX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_N4fHcLX-Ee6rT6SCwCdkxA"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ" 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(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="balances(gateway_address)≥fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Z_lpALSGEe6FipXA1f8GIg" 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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQKpbEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQapbEe6I4bA9GxwhqQ"/> - <org.eventb.core.scAction name="cross_chain_transactiot" org.eventb.core.assignment="balances ≔ balances{gateway_address ↦ balances(gateway_address) − fee}" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.parameter#_tUzFcapaEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/> <org.eventb.core.scParameter name="fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_LUARQbR5Ee6ab9MA5fTFUw" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTo18rX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Uq128LX8Ee6rT6SCwCdkxA" org.eventb.core.theorem="false"/> @@ -94,28 +94,28 @@ <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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdALX-Ee6rT6SCwCdkxA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdALX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_LO7rQLX-Ee6rT6SCwCdkxA"/> <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_3N1_ErR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∉dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="balances ≔ balances∪{address ↦ 0}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/> <org.eventb.core.scParameter name="address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_Mn_nsbSEEe6FipXA1f8GIg" org.eventb.core.type="ADDRESS"/> </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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdArX-Ee6rT6SCwCdkxA"> - <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdArX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_LO7rQbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="addrest" org.eventb.core.assignment="balances ≔ balances{address ↦ balances(address)+amount}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> - <org.eventb.core.scParameter name="amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/> - <org.eventb.core.scParameter name="address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_1UeBYbSEEe6FipXA1f8GIg" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdArX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_ra8KoLX8Ee6rT6SCwCdkxA" org.eventb.core.theorem="false"/> + <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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_eDb48LloEe6mA4ET_9OgqQ"> + <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_eDb48LloEe6mA4ET_9OgqQ|org.eventb.core.refinesEvent#_eDb48bloEe6mA4ET_9OgqQ"/> + <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.action#_Mn_nsrSEEe6FipXA1f8GIg"/> + <org.eventb.core.scParameter name="amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.parameter#_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/> + <org.eventb.core.scParameter name="address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.parameter#_1UeBYbSEEe6FipXA1f8GIg" 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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_eDb48LloEe6mA4ET_9OgqQ|org.eventb.core.guard#_ra8KoLX8Ee6rT6SCwCdkxA" org.eventb.core.theorem="false"/> </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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdBLX-Ee6rT6SCwCdkxA"> <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/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="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdBLX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_MIB2cLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="balances(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCIbWCEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_YKVUsLWQEe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scGuard name="," org.eventb.core.label="grd6;" org.eventb.core.predicate="({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ" org.eventb.core.theorem="false"/> - <org.eventb.core.scAction name="transfer_amounu" org.eventb.core.assignment="balances ≔ ({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> + <org.eventb.core.scGuard name="+" org.eventb.core.label="grd5;" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ" 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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_K_FqILWKEe6ab_EHIz4SJQ"/> <org.eventb.core.scParameter name="user_address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_FP-uELWREe6ab_EHIz4SJQ" org.eventb.core.type="ADDRESS"/> <org.eventb.core.scParameter name="validator_fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_CkNCIrWCEe6ab_EHIz4SJQ" org.eventb.core.type="ℤ"/> <org.eventb.core.scParameter name="transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.parameter#_Ovz7ALWQEe6ab_EHIz4SJQ" org.eventb.core.type="ℤ"/> diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo b/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo index 4c0a95d4968345e9f0594b7eb6f41ec070403a4f..5f344e82b5b3591cdd9c1d06f66e5faf416e7d54 100644 --- a/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo +++ b/BIG/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="2"> +<org.eventb.core.poFile org.eventb.core.poStamp="7"> <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="2"> <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,9 +18,9 @@ <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA"/> <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTX" org.eventb.core.predicate="initial_deposit>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy4mkLR4Ee64F9fr4UDNUA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="2"> - <org.eventb.core.poIdentifier name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="5"> <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)"/> <org.eventb.core.poIdentifier name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/> <org.eventb.core.poIdentifier name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/> @@ -31,9 +31,9 @@ <org.eventb.core.poPredicate name="received_cross_chain_transactionv" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="received_cross_chain_transactionw" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ"/> <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="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="received_cross_chain_transactiony" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicate name="received_cross_chain_transactiony" org.eventb.core.predicate="accounts∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/> </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="2"> + <org.eventb.core.poSequent name="INITIALISATION/inv31;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant establishment" org.eventb.core.poStamp="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="0∈ℕ" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_jJxtELX5Ee6ab_EHIz4SJQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/> @@ -42,84 +42,84 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/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_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="6"> <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="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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="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="estimated_cross_chain_cost'" org.eventb.core.type="ℤ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/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="2"/> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/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="6"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="2"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="2"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionv" org.eventb.core.parentSet="/BIG/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="6"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_TlWCkqmHEe6I4bA9GxwhqQ"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="transaction∉received_transactions[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_VRZ8ELk7Ee6otoREOj7KsQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="6"> <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="/BIG/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="2"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/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="6"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> <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="/BIG/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="2"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" org.eventb.core.parentSet="/BIG/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="0"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_DMOGsKpFEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_AezaEKmIEe6I4bA9GxwhqQ"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> <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="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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_transactiony" org.eventb.core.parentSet="/BIG/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="2"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/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="0"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="balances(gateway_address)≥fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_xor2sLSFEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="accounts(gateway_address)≥fee" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/> <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="fee>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Z_lpALSGEe6FipXA1f8GIg"/> <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="fee≤estimated_cross_chain_cost" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTo18rX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Uq128LX8Ee6rT6SCwCdkxA"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> - <org.eventb.core.poIdentifier name="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> <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="/BIG/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="2"> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/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="0"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_3N1_ErR5Ee6ab9MA5fTFUw"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∉dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI5lkLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_nsLSEEe6FipXA1f8GIg"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction{" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> <org.eventb.core.poIdentifier name="amount" org.eventb.core.type="ℤ"/> - <org.eventb.core.poIdentifier name="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> <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="/BIG/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="2"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6MoLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg"/> - <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="address≠gateway_address" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTpdArX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_ra8KoLX8Ee6rT6SCwCdkxA"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction{" org.eventb.core.parentSet="/BIG/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="7"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_Mn_ns7SEEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_d33iILloEe6mA4ET_9OgqQ|org.eventb.core.guard#_QwdccLSFEe6FipXA1f8GIg"/> + <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="address≠gateway_address" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_eDb48LloEe6mA4ET_9OgqQ|org.eventb.core.guard#_ra8KoLX8Ee6rT6SCwCdkxA"/> </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="2"> + <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="6"> <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transaction\|"/> <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="transfer_amount∈ℕ" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_jJxtELX5Ee6ab_EHIz4SJQ"/> <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA"/> @@ -128,22 +128,22 @@ <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/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="/BIG/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_transaction|" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transaction|" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0"> <org.eventb.core.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/> - <org.eventb.core.poIdentifier name="balances'" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/> + <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_transaction|" org.eventb.core.parentSet="/BIG/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="2"> - <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ"/> - <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="balances(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transaction|" org.eventb.core.parentSet="/BIG/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="0"> + <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkMbErWCEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="accounts(user_address)≥validator_fee+transfer_amount" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCILWCEe6ab_EHIz4SJQ"/> <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_CkNCIbWCEe6ab_EHIz4SJQ"/> <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="transfer_amount>0" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_YKVUsLWQEe6ab_EHIz4SJQ"/> - <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ"/> - <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> + <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="gateway_address∈dom(accounts)" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_jWU2kLWREe6ab_EHIz4SJQ"/> + <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="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI6zsLX-Ee6rT6SCwCdkxA|org.eventb.core.guard#_JOri0LWSEe6ab_EHIz4SJQ"/> </org.eventb.core.poPredicateSet> - <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="2"> + <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="5"> <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="estimated_cross_chain_cost∈ℕ" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.invariant#_jJxtELX5Ee6ab_EHIz4SJQ"/> </org.eventb.core.poPredicateSet> </org.eventb.core.poFile> diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bps b/BIG/CCTx_Preserve_Balance_Gateway_m3.bps index 78d1a20a875aa14ec7592e8d242358cb878154d3..8319687928ee66a3a522fa1db4268a0132b9d8d8 100644 --- a/BIG/CCTx_Preserve_Balance_Gateway_m3.bps +++ b/BIG/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="INITIALISATION/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="2" 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="2" org.eventb.core.psManual="false"/> + <org.eventb.core.psStatus name="INITIALISATION/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="6" 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="6" org.eventb.core.psManual="false"/> </org.eventb.core.psFile> diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bum b/BIG/CCTx_Preserve_Balance_Gateway_m3.bum index ca6c443c00f59d837e1e2aed4caff00841731043..11e9a708a93b993a987670daf8f1f83350e1c628 100644 --- a/BIG/CCTx_Preserve_Balance_Gateway_m3.bum +++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bum @@ -1,43 +1,43 @@ <?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="_RDbZjrX-Ee6rT6SCwCdkxA" org.eventb.texttools.text_lastmodified="1705581416585" org.eventb.texttools.text_representation="machine Cross_chain_transaction_m3 refines Fabric_Ethereum_m2 sees Fabric_Ethereum_c2 variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions balances estimated_cross_chain_cost invariants 	@inv31: estimated_cross_chain_cost ∈ ℕ events event INITIALISATION extends INITIALISATION 	then 		@act31: estimated_cross_chain_cost ≔ 0 end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC end event SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC end event PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC end event LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC extends LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC end event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM extends SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM 	where 		@grd31: fee ≤ estimated_cross_chain_cost end event CREATE_ADDRESS_IN_ETHEREUM extends CREATE_ADDRESS_IN_ETHEREUM end event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM extends DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM 	where 		@grd31: address ≠gateway_address end event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM extends SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM then 	@act31: estimated_cross_chain_cost ≔ transfer_amount 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="__BjoK7oeEe69guM5sfZ6uQ" org.eventb.texttools.text_lastmodified="1706035273637" org.eventb.texttools.text_representation="machine CCTx_Preserve_Balance_Gateway_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 estimated_cross_chain_cost invariants @inv31; estimated_cross_chain_cost ∈ ℕ events event INITIALISATION extends INITIALISATION then @act31; estimated_cross_chain_cost ≔ 0 end event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC end event INITIATE_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends INITIATE_CROSS_CHAIN_TRANSACTION_IN_FABRIC end event PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC end event LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC extends LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC end event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM extends SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM where @grd31; fee ≤ estimated_cross_chain_cost // Check that the estimated fee is greater or equal to the validators fee (RQ2) end event CREATE_ADDRESS_IN_ETHEREUM extends CREATE_ADDRESS_IN_ETHEREUM end event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM extends DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM where @grd31; address ≠gateway_address // The gateway cannot deposit in its own account (RQ3) end event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM extends SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM then @act31; estimated_cross_chain_cost ≔ transfer_amount end end " version="5"> <org.eventb.core.refinesMachine name="'" org.eventb.core.target="CCTx_Fabric_Ethereum_m2"/> <org.eventb.core.seesContext name="_wnFu0KsZEe6I4bA9GxwhqQ" org.eventb.core.target="CCTx_Fabric_Ethereum_c2"/> - <org.eventb.core.event name="_wnFu0KsZEe6I4bA9GxwhqR" 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="_RDbZebX-Ee6rT6SCwCdkxA"> - <org.eventb.core.action name="_ohzhsLX5Ee6ab_EHIz4SJQ" org.eventb.core.assignment="estimated_cross_chain_cost ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act31;" org.eventb.emf.persistence.emf_id="_RDbZeLX-Ee6rT6SCwCdkxA"/> + <org.eventb.core.event name="_wnFu0KsZEe6I4bA9GxwhqR" 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="__BjBGboeEe69guM5sfZ6uQ"> + <org.eventb.core.action name="_ohzhsLX5Ee6ab_EHIz4SJQ" org.eventb.core.assignment="estimated_cross_chain_cost ≔ 0" org.eventb.core.generated="false" org.eventb.core.label="act31;" org.eventb.emf.persistence.emf_id="__BjBGLoeEe69guM5sfZ6uQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_GToO5rX-Ee6rT6SCwCdkxA" 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="_RDbZe7X-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GToO5rX-Ee6rT6SCwCdkxA" 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="__BjBG7oeEe69guM5sfZ6uQ"> <org.eventb.core.refinesEvent name="_OouRkLX-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC"/> </org.eventb.core.event> - <org.eventb.core.event name="_wnFu0KsZEe6I4bA9GxwhqT" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="_RDbZfbX-Ee6rT6SCwCdkxA"> - <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC"/> + <org.eventb.core.event name="_aIltcLk7Ee6otoREOj7KsQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="__BjBHboeEe69guM5sfZ6uQ"> + <org.eventb.core.refinesEvent name="_aIltcbk7Ee6otoREOj7KsQ" org.eventb.core.target="INITIATE_CROSS_CHAIN_TRANSACTION_IN_FABRIC"/> </org.eventb.core.event> - <org.eventb.core.event name="_wnFu0KsZEe6I4bA9GxwhqU" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="_RDbZf7X-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_wnFu0KsZEe6I4bA9GxwhqU" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC" org.eventb.emf.persistence.emf_id="__BjBH7oeEe69guM5sfZ6uQ"> <org.eventb.core.refinesEvent name="'" org.eventb.core.target="PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC"/> </org.eventb.core.event> - <org.eventb.core.event name="_GTo18LX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="_RDbZgbX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GTo18LX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC" org.eventb.emf.persistence.emf_id="__BjBIboeEe69guM5sfZ6uQ"> <org.eventb.core.refinesEvent name="_RDwwoLX-Ee6rT6SCwCdkxA" org.eventb.core.target="LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC"/> </org.eventb.core.event> - <org.eventb.core.event name="_GTo18rX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="_RDbZhLX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GTo18rX-Ee6rT6SCwCdkxA" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.emf.persistence.emf_id="__BjoIboeEe69guM5sfZ6uQ"> <org.eventb.core.refinesEvent name="_N4fHcLX-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM"/> - <org.eventb.core.guard name="_Uq128LX8Ee6rT6SCwCdkxA" org.eventb.core.generated="false" org.eventb.core.label="grd31;" org.eventb.core.predicate="fee ≤ estimated_cross_chain_cost" org.eventb.emf.persistence.emf_id="_RDbZg7X-Ee6rT6SCwCdkxA"/> + <org.eventb.core.guard name="_Uq128LX8Ee6rT6SCwCdkxA" org.eventb.core.comment="Check that the estimated fee is greater or equal to the validators fee (RQ2)" org.eventb.core.generated="false" org.eventb.core.label="grd31;" org.eventb.core.predicate="fee ≤ estimated_cross_chain_cost" org.eventb.emf.persistence.emf_id="__BjoILoeEe69guM5sfZ6uQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_GTpdALX-Ee6rT6SCwCdkxA" 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="_RDbZhrX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GTpdALX-Ee6rT6SCwCdkxA" 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="__BjoI7oeEe69guM5sfZ6uQ"> <org.eventb.core.refinesEvent name="_LO7rQLX-Ee6rT6SCwCdkxA" org.eventb.core.target="CREATE_ADDRESS_IN_ETHEREUM"/> </org.eventb.core.event> - <org.eventb.core.event name="_GTpdArX-Ee6rT6SCwCdkxA" 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="_RDbZibX-Ee6rT6SCwCdkxA"> - <org.eventb.core.refinesEvent name="_LO7rQbX-Ee6rT6SCwCdkxA" org.eventb.core.target="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM"/> - <org.eventb.core.guard name="_ra8KoLX8Ee6rT6SCwCdkxA" org.eventb.core.generated="false" org.eventb.core.label="grd31;" org.eventb.core.predicate="address ≠gateway_address" org.eventb.emf.persistence.emf_id="_RDbZiLX-Ee6rT6SCwCdkxA"/> + <org.eventb.core.event name="_eDb48LloEe6mA4ET_9OgqQ" 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="__BjoJroeEe69guM5sfZ6uQ"> + <org.eventb.core.refinesEvent name="_eDb48bloEe6mA4ET_9OgqQ" org.eventb.core.target="DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM"/> + <org.eventb.core.guard name="_ra8KoLX8Ee6rT6SCwCdkxA" org.eventb.core.comment="The gateway cannot deposit in its own account (RQ3)" org.eventb.core.generated="false" org.eventb.core.label="grd31;" org.eventb.core.predicate="address ≠gateway_address" org.eventb.emf.persistence.emf_id="__BjoJboeEe69guM5sfZ6uQ"/> </org.eventb.core.event> - <org.eventb.core.event name="_GTpdBLX-Ee6rT6SCwCdkxA" 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="_RDbZjLX-Ee6rT6SCwCdkxA"> + <org.eventb.core.event name="_GTpdBLX-Ee6rT6SCwCdkxA" 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="__BjoKboeEe69guM5sfZ6uQ"> <org.eventb.core.refinesEvent name="_MIB2cLX-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM"/> - <org.eventb.core.action name="_uqjBkLX5Ee6ab_EHIz4SJQ" org.eventb.core.assignment="estimated_cross_chain_cost ≔ transfer_amount" org.eventb.core.generated="false" org.eventb.core.label="act31;" org.eventb.emf.persistence.emf_id="_RDbZi7X-Ee6rT6SCwCdkxA"/> - </org.eventb.core.event> - <org.eventb.core.invariant name="_jJxtELX5Ee6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="inv31;" org.eventb.core.predicate="estimated_cross_chain_cost ∈ ℕ" org.eventb.emf.persistence.emf_id="_RDbZd7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_RDbZcLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_RDbZcbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_RDbZcrX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_RDbZc7X-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_RDbZdLX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_DPQj0KsaEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="balances" org.eventb.emf.persistence.emf_id="_RDbZdbX-Ee6rT6SCwCdkxA"/> - <org.eventb.core.variable name="_g0powLX5Ee6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="estimated_cross_chain_cost" org.eventb.emf.persistence.emf_id="_RDbZdrX-Ee6rT6SCwCdkxA"/> + <org.eventb.core.action name="_uqjBkLX5Ee6ab_EHIz4SJQ" org.eventb.core.assignment="estimated_cross_chain_cost ≔ transfer_amount" org.eventb.core.generated="false" org.eventb.core.label="act31;" org.eventb.emf.persistence.emf_id="__BjoKLoeEe69guM5sfZ6uQ"/> + </org.eventb.core.event> + <org.eventb.core.invariant name="_jJxtELX5Ee6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.label="inv31;" org.eventb.core.predicate="estimated_cross_chain_cost ∈ ℕ" org.eventb.emf.persistence.emf_id="__BjBF7oeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="__BjBELoeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="__BjBEboeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="__BjBEroeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="__BjBE7oeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_H2zkgKpbEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="__BjBFLoeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_15j2ALlnEe6mA4ET_9OgqQ" org.eventb.core.generated="false" org.eventb.core.identifier="accounts" org.eventb.emf.persistence.emf_id="__BjBFboeEe69guM5sfZ6uQ"/> + <org.eventb.core.variable name="_g0powLX5Ee6ab_EHIz4SJQ" org.eventb.core.generated="false" org.eventb.core.identifier="estimated_cross_chain_cost" org.eventb.emf.persistence.emf_id="__BjBFroeEe69guM5sfZ6uQ"/> </org.eventb.core.machineFile>