diff --git a/BIG/BIG_c1.bcc b/BIG/BIG_c1.bcc
deleted file mode 100644
index dc6dab94daa2be93e8c8eaebdb7ee9c05318c2ac..0000000000000000000000000000000000000000
--- a/BIG/BIG_c1.bcc
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
-    <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-    <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-    <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
-    <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-    <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
-    <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-    <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-    <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-</org.eventb.core.scContextFile>
diff --git a/BIG/BIG_c1.bps b/BIG/BIG_c1.bps
deleted file mode 100644
index f8ccc4bc6729e01b426a4e64400dbcafe7e5df15..0000000000000000000000000000000000000000
--- a/BIG/BIG_c1.bps
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.psFile/>
diff --git a/BIG/BIG_m1.bcm b/BIG/BIG_m1.bcm
deleted file mode 100644
index b5e9fa1bf152d355417863316578aecec213f38f..0000000000000000000000000000000000000000
--- a/BIG/BIG_m1.bcm
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
-    <org.eventb.core.scSeesContext name="'" org.eventb.core.scTarget="/BIG/BIG_c1.bcc" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.seesContext#_sUpukKl_Ee6I4bA9GxwhqQ"/>
-    <org.eventb.core.scInternalContext name="BIG_c1">
-        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scInvariant name="BIG_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c5" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scVariable name="triggered_events" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
-    <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|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="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|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="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.variable#_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
-    <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.variable#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
-    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'">
-        <org.eventb.core.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
-        <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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_J6KjYKpbEe6I4bA9GxwhqQ"/>
-    </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="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ">
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
-        <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
-        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.scEvent>
-    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ">
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_DMOGsKpFEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_AezaEKmIEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
-        <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
-        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.scEvent>
-    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ">
-        <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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.parameter#_tUzFcapaEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
-        <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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQapbEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.scEvent>
-</org.eventb.core.scMachineFile>
diff --git a/BIG/BIG_m1.bps b/BIG/BIG_m1.bps
deleted file mode 100644
index f8ccc4bc6729e01b426a4e64400dbcafe7e5df15..0000000000000000000000000000000000000000
--- a/BIG/BIG_m1.bps
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.psFile/>
diff --git a/BIG/CCTx_Abstract_DLT_c1.bcc b/BIG/CCTx_Abstract_DLT_c1.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..d7fa27d51aec0807f1e062ca51b0ad05e2399153
--- /dev/null
+++ b/BIG/CCTx_Abstract_DLT_c1.bcc
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
+    <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+    <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+    <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+    <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+    <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+    <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+    <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+    <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+</org.eventb.core.scContextFile>
diff --git a/BIG/BIG_c1.bpo b/BIG/CCTx_Abstract_DLT_c1.bpo
similarity index 67%
rename from BIG/BIG_c1.bpo
rename to BIG/CCTx_Abstract_DLT_c1.bpo
index d3839e43dc13cbf18fb439603ba38f47330e1493..47043a0e540036d509d38ac31d3fecbf05d5887e 100644
--- a/BIG/BIG_c1.bpo
+++ b/BIG/CCTx_Abstract_DLT_c1.bpo
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.poFile org.eventb.core.poStamp="33">
-    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="33">
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
         <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
         <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
         <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
@@ -10,9 +10,9 @@
         <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
         <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
     </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/BIG_c1.bpo|org.eventb.core.poFile#BIG_c1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="33">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Abstract_DLT_c1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_c1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
     </org.eventb.core.poPredicateSet>
 </org.eventb.core.poFile>
diff --git a/BIG/BIG_c1.bpr b/BIG/CCTx_Abstract_DLT_c1.bpr
similarity index 100%
rename from BIG/BIG_c1.bpr
rename to BIG/CCTx_Abstract_DLT_c1.bpr
diff --git a/BIG/Ethereum_Fabric_c2.bps b/BIG/CCTx_Abstract_DLT_c1.bps
similarity index 100%
rename from BIG/Ethereum_Fabric_c2.bps
rename to BIG/CCTx_Abstract_DLT_c1.bps
diff --git a/BIG/BIG_c1.buc b/BIG/CCTx_Abstract_DLT_c1.buc
similarity index 100%
rename from BIG/BIG_c1.buc
rename to BIG/CCTx_Abstract_DLT_c1.buc
diff --git a/BIG/CCTx_Abstract_DLT_m1.bcm b/BIG/CCTx_Abstract_DLT_m1.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..b7a0723f3f5be8a9ef7568d41a638b43571b4b04
--- /dev/null
+++ b/BIG/CCTx_Abstract_DLT_m1.bcm
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scSeesContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.seesContext#_sUpukKl_Ee6I4bA9GxwhqQ"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/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.scVariable name="triggered_events" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+    <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|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="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|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="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.variable#_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+    <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.variable#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" 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.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" 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#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
+        <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.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactionu" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" 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.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>
+    <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"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
+        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" 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.scGuard name="'" org.eventb.core.label="grd1;" 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.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="GATEWAY_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#_0sEN8KpaEe6I4bA9GxwhqQ">
+        <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.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.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.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/BIG/BIG_m1.bpo b/BIG/CCTx_Abstract_DLT_m1.bpo
similarity index 56%
rename from BIG/BIG_m1.bpo
rename to BIG/CCTx_Abstract_DLT_m1.bpo
index f11ae03d141ff04bb02ceb2f535f99ee4558a536..3b3b3a42d8802b4eec750bec9e70a253dd4ebb5e 100644
--- a/BIG/BIG_m1.bpo
+++ b/BIG/CCTx_Abstract_DLT_m1.bpo
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.poFile org.eventb.core.poStamp="118">
-    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="113">
+<org.eventb.core.poFile org.eventb.core.poStamp="1">
+    <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)"/>
         <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
@@ -9,73 +9,73 @@
         <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
         <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
     </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="117">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/CCTx_Abstract_DLT_m1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_m1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="1">
         <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
         <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)"/>
         <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="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="117">
+    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/CCTx_Abstract_DLT_m1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_m1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="1">
         <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="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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="117"/>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="118">
+    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiont" 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_transactiont" org.eventb.core.poStamp="1"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" 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="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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="118">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_I9G5gKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_SAx1UKmDEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionu" 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_transactionu" org.eventb.core.poStamp="1">
+        <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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="118">
+    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_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#ALLHYP" org.eventb.core.poStamp="1">
         <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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="118">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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="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>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="118">
+    <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)"/>
         <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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="118">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_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#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="1">
+        <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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="118">
+    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionx" 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="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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="118">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionx" 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_transactionx" org.eventb.core.poStamp="1">
+        <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/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="118">
+    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiony" 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="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="received_cross_chain_transactions'" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
     </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="118">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" 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_transactiony" org.eventb.core.poStamp="1">
+        <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.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/BIG_m1.bpo|org.eventb.core.poFile#BIG_m1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="118">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Abstract_DLT_m1.bpo|org.eventb.core.poFile#CCTx_Abstract_DLT_m1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="PRD2" 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="PRD3" 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="PRD4" 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.poFile>
diff --git a/BIG/BIG_m1.bpr b/BIG/CCTx_Abstract_DLT_m1.bpr
similarity index 100%
rename from BIG/BIG_m1.bpr
rename to BIG/CCTx_Abstract_DLT_m1.bpr
diff --git a/BIG/Fabric_Ethereum_c2.bps b/BIG/CCTx_Abstract_DLT_m1.bps
similarity index 100%
rename from BIG/Fabric_Ethereum_c2.bps
rename to BIG/CCTx_Abstract_DLT_m1.bps
diff --git a/BIG/BIG_m1.bum b/BIG/CCTx_Abstract_DLT_m1.bum
similarity index 99%
rename from BIG/BIG_m1.bum
rename to BIG/CCTx_Abstract_DLT_m1.bum
index fc3d6873698806b40bf4add1e0fa036945e77ad6..c41d0e3369f829a4c4ee359b67672f2c14b90c52 100644
--- a/BIG/BIG_m1.bum
+++ b/BIG/CCTx_Abstract_DLT_m1.bum
@@ -1,6 +1,6 @@
 <?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&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions&#10;&#10;invariants&#10;&#9;@inv1: received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS&#10;&#9;@inv2: triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS&#10;&#9;@inv3: subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS&#10;&#9;@inv4: gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS&#10;&#9;@inv6: received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS&#10;&#10;events&#10;  event INITIALISATION&#10;  &#9;then&#10;  &#9;&#9;@act1: received_transactions ≔ ∅&#10;   &#9;&#9;@act2: triggered_events ≔ ∅&#10;   &#9;&#9;@act3: subscriptions ≔ ∅&#10;   &#9;&#9;@act4: gateway_pending_transactions ≔ ∅&#10;   &#9;&#9;@act6: received_cross_chain_transactions ≔ ∅&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS&#10;  &#9;where&#10;  &#9;&#9;@grd1: gateway ↦ source_smart_contract ∉ subscriptions // The gateway is not already subscribed to the smart contract events&#10;  &#9;then&#10;&#9;&#9;@act1: subscriptions ≔ subscriptions  ∪ {gateway ↦ source_smart_contract} // The gateway is subscribed to listen to the smart contract events&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION&#10;&#9;any transaction&#10;&#9;where&#10;&#9;&#9;@grd1: transaction ∈ TRANSACTIONS&#10;&#9;&#9;@grd3: transaction ∉ received_transactions[{source_smart_contract}]&#10;&#9;then&#10;&#9;&#9;@act1: received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction}&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION&#10;  &#9;any transaction cross_chain_event&#10;  &#9;where&#10;  &#9;&#9;@grd1: source_smart_contract ↦ transaction ∈ received_transactions // The smart contract has a pending transaction to process&#10;  &#9;&#9;@grd2: cross_chain_event ∉ triggered_events[{source_smart_contract}] // The smart contract will allways trigger a new event&#10;  &#9;then&#10;  &#9;&#9;@act1: triggered_events ≔  triggered_events ∪ {source_smart_contract ↦ cross_chain_event} // The smart contract triggers a new event related to the transaction processing&#10;  &#9;&#9;@act2: received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction} // The smart contract processed the transaction&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT&#10;  &#9;any cross_chain_event cross_chain_transaction&#10;  &#9;where&#10;  &#9;&#9;@grd1: source_smart_contract ↦ cross_chain_event ∈ triggered_events // The smart contract has triggered an event&#10;  &#9;&#9;@grd2: gateway ↦ source_smart_contract ∈ subscriptions // Exist a subscription to the smart contract events&#10;  &#9;&#9;@grd3: gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions // The event was not already listened&#10;  &#9;then&#10;&#9;&#9;@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&#10;  &#9;&#9;@act2: triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event} // The event is listened and processed&#10;  end&#10;&#10;  event GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION&#10;  &#9;any cross_chain_transaction&#10;  &#9;when&#10;  &#9;&#9;@grd1: gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions // There is one pending cross-chain transaction to process&#10;  &#9;then&#10;  &#9;&#9;@act1: received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction}&#10;  &#9;&#9;@act2: gateway_pending_transactions ≔  gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}&#10;  end&#10;&#10;end&#10;" version="5">
-    <org.eventb.core.seesContext name="_sUpukKl_Ee6I4bA9GxwhqQ" org.eventb.core.target="BIG_c1"/>
+    <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"/>
diff --git a/BIG/CCTx_Ethereum_Fabric_c2.bcc b/BIG/CCTx_Ethereum_Fabric_c2.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..3b03ad620dc0a11a6305245125db7518f6bb994f
--- /dev/null
+++ b/BIG/CCTx_Ethereum_Fabric_c2.bcc
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="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.theorem="false"/>
+    <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" 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.theorem="false"/>
+    <org.eventb.core.scConstant name="write" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.constant#_cent8a75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
+    <org.eventb.core.scCarrierSet name="USERS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.carrierSet#_51xqoK74Ee6N-vMrFZcPfQ" org.eventb.core.type="â„™(USERS)"/>
+    <org.eventb.core.scConstant name="read" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.constant#_cent8K75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
+    <org.eventb.core.scCarrierSet name="PERMISSIONS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.carrierSet#_rDT64K8DEe6CsKD2nJu6WQ" org.eventb.core.type="â„™(PERMISSIONS)"/>
+    <org.eventb.core.scConstant name="gateway_user" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.constant#_ceoVAK75Ee6N-vMrFZcPfQ" org.eventb.core.type="USERS"/>
+</org.eventb.core.scContextFile>
diff --git a/BIG/Ethereum_Fabric_c2.bpo b/BIG/CCTx_Ethereum_Fabric_c2.bpo
similarity index 67%
rename from BIG/Ethereum_Fabric_c2.bpo
rename to BIG/CCTx_Ethereum_Fabric_c2.bpo
index f30814093753430274fb64bf21d8786b971e921f..3890af14203add259e718ed0c6a7106d57a59aaa 100644
--- a/BIG/Ethereum_Fabric_c2.bpo
+++ b/BIG/CCTx_Ethereum_Fabric_c2.bpo
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.poFile org.eventb.core.poStamp="3">
-    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="3">
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
         <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
         <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
         <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
@@ -9,17 +9,17 @@
         <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
         <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
         <org.eventb.core.poIdentifier name="USERS" org.eventb.core.type="â„™(USERS)"/>
         <org.eventb.core.poIdentifier name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
         <org.eventb.core.poIdentifier name="write" org.eventb.core.type="PERMISSIONS"/>
         <org.eventb.core.poIdentifier name="read" org.eventb.core.type="PERMISSIONS"/>
         <org.eventb.core.poIdentifier name="gateway_user" org.eventb.core.type="USERS"/>
     </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_c2.bpo|org.eventb.core.poFile#Ethereum_Fabric_c2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="3">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_e542gK75Ee6N-vMrFZcPfQ"/>
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_user∈USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_-6gTUK75Ee6N-vMrFZcPfQ"/>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Ethereum_Fabric_c2.bpo|org.eventb.core.poFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" 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="PRD1" 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.poFile>
diff --git a/BIG/Ethereum_Fabric_c2.bpr b/BIG/CCTx_Ethereum_Fabric_c2.bpr
similarity index 100%
rename from BIG/Ethereum_Fabric_c2.bpr
rename to BIG/CCTx_Ethereum_Fabric_c2.bpr
diff --git a/BIG/CCTx_Ethereum_Fabric_c2.bps b/BIG/CCTx_Ethereum_Fabric_c2.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/BIG/CCTx_Ethereum_Fabric_c2.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/BIG/Ethereum_Fabric_c2.buc b/BIG/CCTx_Ethereum_Fabric_c2.buc
similarity index 98%
rename from BIG/Ethereum_Fabric_c2.buc
rename to BIG/CCTx_Ethereum_Fabric_c2.buc
index 5fa4e25918541c658ee7fc6ccfe3cb3b51cffb13..de88a0304660c8821a0a3b5bb0b859dd5d38bfb9 100644
--- a/BIG/Ethereum_Fabric_c2.buc
+++ b/BIG/CCTx_Ethereum_Fabric_c2.buc
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_QZ84Z7RuEe6XM4m7AoCU9A" org.eventb.texttools.text_lastmodified="1705409613544" org.eventb.texttools.text_representation="context Ethereum_Fabric_c2 extends BIG_c1&#10;&#10;sets PERMISSIONS USERS&#10;&#10;constants read write gateway_user&#10;&#10;axioms&#10;  @axm11: partition(PERMISSIONS, {read}, {write}) // Two only type of permissions exist: read and write&#10;  @axm12: gateway_user ∈ USERS // The gateway has an Hyperledger Fabric user&#10;end&#10;" version="3">
-    <org.eventb.core.extendsContext name="'" org.eventb.core.target="BIG_c1"/>
+    <org.eventb.core.extendsContext name="'" org.eventb.core.target="CCTx_Abstract_DLT_c1"/>
     <org.eventb.core.axiom name="_e542gK75Ee6N-vMrFZcPfQ" org.eventb.core.comment="Two only type of permissions exist: read and write" org.eventb.core.generated="false" org.eventb.core.label="axm11;" org.eventb.core.predicate="partition(PERMISSIONS, {read}, {write})" org.eventb.emf.persistence.emf_id="_QZ84ZbRuEe6XM4m7AoCU9A"/>
     <org.eventb.core.axiom name="_-6gTUK75Ee6N-vMrFZcPfQ" org.eventb.core.comment="The gateway has an Hyperledger Fabric user" org.eventb.core.generated="false" org.eventb.core.label="axm12;" org.eventb.core.predicate="gateway_user ∈ USERS" org.eventb.emf.persistence.emf_id="_QZ84ZrRuEe6XM4m7AoCU9A"/>
     <org.eventb.core.constant name="_cent8K75Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.identifier="read" org.eventb.emf.persistence.emf_id="_QZ84YrRuEe6XM4m7AoCU9A"/>
diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bcm b/BIG/CCTx_Ethereum_Fabric_m2.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..9e51743ebcfe70a0dd68b6aef0a7f38ccdf6867d
--- /dev/null
+++ b/BIG/CCTx_Ethereum_Fabric_m2.bcm
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/BIG/CCTx_Ethereum_Fabric_c2.bcc" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.seesContext#_MuSzUK76Ee6N-vMrFZcPfQ"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="CCTx_Ethereum_Fabric_c2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" 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.theorem="false"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" 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.theorem="false"/>
+        <org.eventb.core.scConstant name="write" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.constant#_cent8a75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.scCarrierSet name="USERS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.carrierSet#_51xqoK74Ee6N-vMrFZcPfQ" org.eventb.core.type="â„™(USERS)"/>
+        <org.eventb.core.scConstant name="read" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.constant#_cent8K75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.scCarrierSet name="PERMISSIONS" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.carrierSet#_rDT64K8DEe6CsKD2nJu6WQ" org.eventb.core.type="â„™(PERMISSIONS)"/>
+        <org.eventb.core.scConstant name="gateway_user" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#CCTx_Ethereum_Fabric_c2|org.eventb.core.constant#_ceoVAK75Ee6N-vMrFZcPfQ" org.eventb.core.type="USERS"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/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_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_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.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="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)"/>
+    <org.eventb.core.scVariable name="authenticated_users" 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#_Vz67EK76Ee6N-vMrFZcPfQ" org.eventb.core.type="â„™(USERS)"/>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR">
+        <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_transactiont" 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.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" 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#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
+        <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="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="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">
+        <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_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVQLX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_F6qVQbX-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_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>
+    <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"/>
+        <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"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_ETHEREUM" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVRrX-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_transactionx" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVRrX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_F6qVR7X-Ee6rT6SCwCdkxA"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC" org.eventb.core.source="/BIG/CCTx_Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#CCTx_Ethereum_Fabric_m2|org.eventb.core.event#_F6qVSLX-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_transactiony" 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.refinesEvent#_F6q8ULX-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.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="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.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bpo b/BIG/CCTx_Ethereum_Fabric_m2.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..3b5148e21e319ff2eb7440a21221bb34c7c2caa8
--- /dev/null
+++ b/BIG/CCTx_Ethereum_Fabric_m2.bpo
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="3">
+    <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)"/>
+        <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+        <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poIdentifier name="USERS" org.eventb.core.type="â„™(USERS)"/>
+        <org.eventb.core.poIdentifier name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+        <org.eventb.core.poIdentifier name="write" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.poIdentifier name="read" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.poIdentifier name="gateway_user" org.eventb.core.type="USERS"/>
+        <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.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        <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)"/>
+        <org.eventb.core.poIdentifier name="authenticated_users" org.eventb.core.type="â„™(USERS)"/>
+        <org.eventb.core.poPredicate name="received_cross_chain_transactiont" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="received_cross_chain_transactionu" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
+        <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.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.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#'"/>
+        <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#_sUpukKl_Ee6I4bA9GxwhqR"/>
+        <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#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.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#'"/>
+        <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#_sUpukKl_Ee6I4bA9GxwhqR"/>
+        <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#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.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#'"/>
+        <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#_sUpukKl_Ee6I4bA9GxwhqR"/>
+        <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#_scPcsK8DEe6CsKD2nJu6WQ"/>
+        <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.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#'"/>
+        <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#_sUpukKl_Ee6I4bA9GxwhqR"/>
+        <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#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.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="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.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.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.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>
+    <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.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.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.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.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.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.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.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.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.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.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.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="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.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.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="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.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bpr b/BIG/CCTx_Ethereum_Fabric_m2.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..c17011a6e0ceda39c2c229656bb76df07f6b885e
--- /dev/null
+++ b/BIG/CCTx_Ethereum_Fabric_m2.bpr
@@ -0,0 +1,386 @@
+<?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.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(PERMISSIONS,{read},{write}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9,p10"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p9,p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="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.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_users" org.eventb.core.type="â„™(USERS)"/>
+        <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prIdent name="user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="user ↦ write∈write_grant"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="PERMISSIONS={read,write}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬read=write"/>
+        <org.eventb.core.prPred name="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="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="authenticated_users⊆USERS"/>
+        <org.eventb.core.prPred name="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.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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </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"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(PERMISSIONS,{read},{write}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees tx)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
+                                <org.eventb.core.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p19">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p2,p3,p5,p6,p7,p19">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="auditted_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/>
+        <org.eventb.core.prIdent name="authenticated_users" org.eventb.core.type="â„™(USERS)"/>
+        <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prIdent name="user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/>
+        <org.eventb.core.prPred name="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.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="user∈authenticated_users"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_user∈USERS">
+            <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="tx∈received_cross_chain_transactions∪{target_smart_contract ↦ cross_chain_transaction}">
+            <org.eventb.core.prIdent name="tx" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="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}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬read=write"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀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.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="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.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"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(PERMISSIONS,{read},{write}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p1,p2,p5,p6,p7">
+                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="auditted_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS)"/>
+        <org.eventb.core.prIdent name="authenticated_users" org.eventb.core.type="â„™(USERS)"/>
+        <org.eventb.core.prIdent name="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prIdent name="user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="write_grant" org.eventb.core.type="ℙ(USERS×PERMISSIONS)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="user∈authenticated_users"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_user∈USERS">
+            <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="user ↦ write∈write_grant"/>
+        <org.eventb.core.prPred name="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)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬read=write"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="authenticated_users⊆USERS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/>
+        <org.eventb.core.prPred name="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.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"/>
+        <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="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬read=write">
+            <org.eventb.core.prIdent name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+            <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS×USERS))∈(∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)) → {gateway_user}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})">
+            <org.eventb.core.prIdent name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+            <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="PERMISSIONS={read,write}">
+            <org.eventb.core.prIdent name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+            <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="CROSS_CHAIN_SMART_CONTRACTS,CROSS_CHAIN_TRANSACTIONS,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="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬read=write">
+            <org.eventb.core.prIdent name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+            <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})">
+            <org.eventb.core.prIdent name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+            <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" 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.prPred name="p2" org.eventb.core.predicate="PERMISSIONS={read,write}">
+            <org.eventb.core.prIdent name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+            <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv14;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="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="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/>
+                <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="p4"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p7"/>
+                        <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,p3">
+                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬read=write"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="{gateway_user ↦ write}∈{gateway_user} ↔ {write}"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway_user∈USERS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})"/>
+        <org.eventb.core.prPred name="p4" 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="p5" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="PERMISSIONS={read,write}"/>
+        <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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv16;/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,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="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="gateway_user" org.eventb.core.type="USERS"/>
+        <org.eventb.core.prIdent name="write" org.eventb.core.type="PERMISSIONS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬read=write">
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" 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.prPred name="p1" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})">
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="PERMISSIONS={read,write}">
+            <org.eventb.core.prIdent name="read" org.eventb.core.type="PERMISSIONS"/>
+        </org.eventb.core.prPred>
+        <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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/BIG/CCTx_Ethereum_Fabric_m2.bps b/BIG/CCTx_Ethereum_Fabric_m2.bps
new file mode 100644
index 0000000000000000000000000000000000000000..27e3d8c236ba8edc6dc60620dee0a57f7faa3b03
--- /dev/null
+++ b/BIG/CCTx_Ethereum_Fabric_m2.bps
@@ -0,0 +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.psFile>
diff --git a/BIG/Ethereum_Fabric_m2.bum b/BIG/CCTx_Ethereum_Fabric_m2.bum
similarity index 51%
rename from BIG/Ethereum_Fabric_m2.bum
rename to BIG/CCTx_Ethereum_Fabric_m2.bum
index f18d887fd1b4b573d626b282089f8d5be2b1eb6a..5ddaf94a8f54ee0d9f4803bd66f5f1edd01ec90f 100644
--- a/BIG/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="_FB8EHrO6Ee671Y_A8Y-IGw" org.eventb.texttools.text_lastmodified="1705332227795" org.eventb.texttools.text_representation="machine Ethereum_Fabric_m2 refines BIG_m1  sees Ethereum_Fabric_c2&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions&#10;received_cross_chain_transactions authenticated_users auditted_transactions write_grant&#10;&#10;invariants&#10;  @inv11; authenticated_users ⊆ USERS&#10;  @inv12; auditted_transactions ∈ received_cross_chain_transactions → authenticated_users&#10;  @inv13; ∀ tx · tx ∈ received_cross_chain_transactions ⇒ (∃ u · u ∈&#10;                  authenticated_users ∧ tx ↦ u ∈ auditted_transactions) // RQ1&#10;  @inv14; write_grant ∈ authenticated_users ↔ {write}&#10;  @inv16; auditted_transactions[received_cross_chain_transactions] ⊆ dom(write_grant) // RQ2&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;    then&#10;      @act11; authenticated_users ≔ {gateway_user} // ENV2&#10;      @act12; auditted_transactions ≔ ∅&#10;      @act13; write_grant ≔ {gateway_user ↦ write} // ENV3&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS extends SUBSCRIBE_SMART_CONTRACT_EVENTS&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION extends SUBMIT_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION extends PROCESS_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT extends LISTEN_SMART_CONTRACT_EVENT&#10;  end&#10;&#10;  event GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION&#10;    any&#10;    &#9;user&#10;    where&#10;      @grd11; user ∈ authenticated_users // RQ4&#10;      @grd12; user ↦ write ∈ write_grant // RQ3&#10;    then&#10;      @act11; auditted_transactions(target_smart_contract ↦ cross_chain_transaction) ≔ user //RQ1&#10;  end&#10;end&#10;" version="5">
-    <org.eventb.core.refinesMachine name="'" org.eventb.core.target="BIG_m1"/>
-    <org.eventb.core.seesContext name="_MuSzUK76Ee6N-vMrFZcPfQ" org.eventb.core.target="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="_FB7dELO6Ee671Y_A8Y-IGw">
-        <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="_FB7dDbO6Ee671Y_A8Y-IGw"/>
-        <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="_FB7dDrO6Ee671Y_A8Y-IGw"/>
-        <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="_FB7dD7O6Ee671Y_A8Y-IGw"/>
+<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&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions authenticated_users auditted_transactions write_grant&#10;&#10;invariants&#10;  @inv11; authenticated_users ⊆ USERS&#10;  @inv12; auditted_transactions ∈ received_cross_chain_transactions → authenticated_users&#10;  @inv13; ∀ tx · tx ∈ received_cross_chain_transactions ⇒ (∃ u · u ∈&#10;          authenticated_users ∧ tx ↦ u ∈ auditted_transactions) // RQ1&#10;  @inv14; write_grant ∈ authenticated_users ↔ {write}&#10;  @inv16; auditted_transactions[received_cross_chain_transactions] ⊆ dom(write_grant) // RQ2&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;    then&#10;      @act11; authenticated_users ≔ {gateway_user} // ENV2&#10;      @act12; auditted_transactions ≔ ∅&#10;      @act13; write_grant ≔ {gateway_user ↦ write} // ENV3&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_ETHEREUM extends SUBSCRIBE_SMART_CONTRACT_EVENTS&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM extends SUBMIT_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION_IN_ETHEREUM extends PROCESS_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT_IN_ETHEREUM extends LISTEN_SMART_CONTRACT_EVENT&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_FABRIC extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION&#10;    any user&#10;    where&#10;      @grd11; user ∈ authenticated_users // RQ4&#10;      @grd12; user ↦ write ∈ write_grant // RQ3&#10;    then&#10;      @act11; auditted_transactions(target_smart_contract ↦ cross_chain_transaction) ≔ user // RQ1&#10;  end&#10;end&#10;" 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>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqS" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" org.eventb.emf.persistence.emf_id="_FB8EELO6Ee671Y_A8Y-IGw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS"/>
+    <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.refinesEvent name="_F6qVQbX-Ee6rT6SCwCdkxA" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS"/>
     </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqT" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_FB8EErO6Ee671Y_A8Y-IGw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBMIT_CROSS_CHAIN_TRANSACTION"/>
+    <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>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqU" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_FB8EFLO6Ee671Y_A8Y-IGw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="PROCESS_CROSS_CHAIN_TRANSACTION"/>
+    <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.refinesEvent name="_F6qVRbX-Ee6rT6SCwCdkxA" org.eventb.core.target="PROCESS_CROSS_CHAIN_TRANSACTION"/>
     </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqV" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.emf.persistence.emf_id="_FB8EFrO6Ee671Y_A8Y-IGw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="LISTEN_SMART_CONTRACT_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.refinesEvent name="_F6qVR7X-Ee6rT6SCwCdkxA" org.eventb.core.target="LISTEN_SMART_CONTRACT_EVENT"/>
     </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqW" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_FB8EHLO6Ee671Y_A8Y-IGw">
-        <org.eventb.core.refinesEvent name="'" 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="_FB8EG7O6Ee671Y_A8Y-IGw"/>
-        <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="_FB8EGbO6Ee671Y_A8Y-IGw"/>
-        <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="_FB8EGrO6Ee671Y_A8Y-IGw"/>
-        <org.eventb.core.parameter name="_kwOZ8K8IEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.identifier="user" org.eventb.emf.persistence.emf_id="_FB8EGLO6Ee671Y_A8Y-IGw"/>
+    <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.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.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="_FB7dCLO6Ee671Y_A8Y-IGw"/>
-    <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="_FB7dCbO6Ee671Y_A8Y-IGw"/>
-    <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 ∈&#10;                  authenticated_users ∧ tx ↦ u ∈ auditted_transactions)" org.eventb.emf.persistence.emf_id="_FB7dCrO6Ee671Y_A8Y-IGw"/>
-    <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="_FB7dC7O6Ee671Y_A8Y-IGw"/>
-    <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="_FB7dDLO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_FB7dALO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_FB7dAbO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_FB7dArO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_FB7dA7O6Ee671Y_A8Y-IGw"/>
-    <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="_FB7dBLO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_Vz67EK76Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.identifier="authenticated_users" org.eventb.emf.persistence.emf_id="_FB7dBbO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_MgfLYK77Ee6N-vMrFZcPfQ" org.eventb.core.generated="false" org.eventb.core.identifier="auditted_transactions" org.eventb.emf.persistence.emf_id="_FB7dBrO6Ee671Y_A8Y-IGw"/>
-    <org.eventb.core.variable name="_FuVEoK8HEe6CsKD2nJu6WQ" org.eventb.core.generated="false" org.eventb.core.identifier="write_grant" org.eventb.emf.persistence.emf_id="_FB7dB7O6Ee671Y_A8Y-IGw"/>
+    <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 ∈&#10;          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.machineFile>
diff --git a/BIG/CCTx_Fabric_Ethereum_c2.bcc b/BIG/CCTx_Fabric_Ethereum_c2.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..852a14a216b97c1169ca72a8535b5a5967030479
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_c2.bcc
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit&gt;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.theorem="false"/>
+    <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NobR4Ee64F9fr4UDNUA" org.eventb.core.type="ℤ"/>
+    <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.carrierSet#_oy50sLR4Ee64F9fr4UDNUA" org.eventb.core.type="â„™(ADDRESS)"/>
+    <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.type="ADDRESS"/>
+</org.eventb.core.scContextFile>
diff --git a/BIG/Fabric_Ethereum_c2.bpo b/BIG/CCTx_Fabric_Ethereum_c2.bpo
similarity index 67%
rename from BIG/Fabric_Ethereum_c2.bpo
rename to BIG/CCTx_Fabric_Ethereum_c2.bpo
index c442f9485e183639867ad45e397a36a07b05dd9f..30ff1b97671b6dfec769da3de360551e38aff65d 100644
--- a/BIG/Fabric_Ethereum_c2.bpo
+++ b/BIG/CCTx_Fabric_Ethereum_c2.bpo
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.poFile org.eventb.core.poStamp="10">
-    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="10">
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
         <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
         <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
         <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
@@ -9,15 +9,15 @@
         <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
         <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
         <org.eventb.core.poIdentifier name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
         <org.eventb.core.poIdentifier name="initial_deposit" org.eventb.core.type="ℤ"/>
         <org.eventb.core.poIdentifier name="gateway_address" org.eventb.core.type="ADDRESS"/>
     </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_c2.bpo|org.eventb.core.poFile#Fabric_Ethereum_c2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="10">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA"/>
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="initial_deposit&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy4mkLR4Ee64F9fr4UDNUA"/>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Fabric_Ethereum_c2.bpo|org.eventb.core.poFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" 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="PRD1" org.eventb.core.predicate="initial_deposit&gt;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.poFile>
diff --git a/BIG/Ethereum_Fabric_m2.bpr b/BIG/CCTx_Fabric_Ethereum_c2.bpr
similarity index 100%
rename from BIG/Ethereum_Fabric_m2.bpr
rename to BIG/CCTx_Fabric_Ethereum_c2.bpr
diff --git a/BIG/CCTx_Fabric_Ethereum_c2.bps b/BIG/CCTx_Fabric_Ethereum_c2.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_c2.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/BIG/Fabric_Ethereum_c2.buc b/BIG/CCTx_Fabric_Ethereum_c2.buc
similarity index 98%
rename from BIG/Fabric_Ethereum_c2.buc
rename to BIG/CCTx_Fabric_Ethereum_c2.buc
index 7ade93ba0b382e1287b337a57cd34950b1730255..ab957508951866b179b293f6302316266708559d 100644
--- a/BIG/Fabric_Ethereum_c2.buc
+++ b/BIG/CCTx_Fabric_Ethereum_c2.buc
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_oyp9FbR4Ee64F9fr4UDNUA" org.eventb.texttools.text_lastmodified="1705414072162" org.eventb.texttools.text_representation="context Fabric_Ethereum_c2 extends BIG_c1&#10;&#10;sets ADDRESS&#10;&#10;constants gateway_address initial_deposit&#10;&#10;axioms&#10;&#9;@axm11: gateway_address ∈ ADDRESS&#10;&#9;@axm12: initial_deposit &gt; 0&#10;end&#10;" version="3">
-    <org.eventb.core.extendsContext name="'" org.eventb.core.target="BIG_c1"/>
+    <org.eventb.core.extendsContext name="'" org.eventb.core.target="CCTx_Abstract_DLT_c1"/>
     <org.eventb.core.axiom name="_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.generated="false" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_oyp9E7R4Ee64F9fr4UDNUA"/>
     <org.eventb.core.axiom name="_oy4mkLR4Ee64F9fr4UDNUA" org.eventb.core.generated="false" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit &gt; 0" org.eventb.emf.persistence.emf_id="_oyp9FLR4Ee64F9fr4UDNUA"/>
     <org.eventb.core.constant name="_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_address" org.eventb.emf.persistence.emf_id="_oyp9EbR4Ee64F9fr4UDNUA"/>
diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bcm b/BIG/CCTx_Fabric_Ethereum_m2.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..15fa32f88b500bd6c320add55a3dc3e121a00ad6
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_m2.bcm
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_m1.bcm" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/BIG/CCTx_Fabric_Ethereum_c2.bcc" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.seesContext#_wnFu0KsZEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="CCTx_Fabric_Ethereum_c2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit&gt;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.theorem="false"/>
+        <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NobR4Ee64F9fr4UDNUA" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.carrierSet#_oy50sLR4Ee64F9fr4UDNUA" org.eventb.core.type="â„™(ADDRESS)"/>
+        <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.type="ADDRESS"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/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.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="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)"/>
+    <org.eventb.core.scVariable name="received_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#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" 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.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_transactiont" 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.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" 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#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
+        <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.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>
+    <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"/>
+        <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"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-gLX-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_transactionx" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-gLX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_GI4-gbX-Ee6rT6SCwCdkxA"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#CCTx_Fabric_Ethereum_m2|org.eventb.core.event#_GI4-grX-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_transactiony" 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.refinesEvent#_GI4-g7X-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.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_transactios" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee&gt;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.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.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.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&gt;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>
+    <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="grd3;" org.eventb.core.predicate="validator_fee&gt;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&gt;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.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.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bpo b/BIG/CCTx_Fabric_Ethereum_m2.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..b8913290a1f586c421286900b135de543db34602
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_m2.bpo
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="3">
+    <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)"/>
+        <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+        <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poIdentifier name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+        <org.eventb.core.poIdentifier name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.poIdentifier name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/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&gt;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.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        <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)"/>
+        <org.eventb.core.poIdentifier name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        <org.eventb.core.poPredicate name="received_cross_chain_transactiont" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="received_cross_chain_transactionu" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
+        <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.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.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#'"/>
+        <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#_sUpukKl_Ee6I4bA9GxwhqR"/>
+        <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#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.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="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.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.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.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>
+    <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.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.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.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.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.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.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.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.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.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.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.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="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.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.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.poPredicate name="PRD3" org.eventb.core.predicate="fee&gt;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.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.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.poIdentifier name="address" 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.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.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.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.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.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.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.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.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&gt;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>
+    <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.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.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.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.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.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.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.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.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.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.poIdentifier name="balances'" 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>
+    <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.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee&gt;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&gt;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.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>
+    <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>
+</org.eventb.core.poFile>
diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bpr b/BIG/CCTx_Fabric_Ethereum_m2.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..4fc6e190f832cec81f5e0e2f5ebf927ca9f2e962
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_m2.bpr
@@ -0,0 +1,1796 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="INITIALISATION/inv1;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="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="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv13;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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.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.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ADDRESS×ℤ))∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv12;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ADDRESS" org.eventb.core.psManual="true">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊥"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(∅ ⦂ ℙ(ADDRESS×ℤ))"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.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.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" 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="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p1"/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊥"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(∅ ⦂ ℙ(ADDRESS×ℤ))"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/grd11;/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ADDRESS" org.eventb.core.psManual="true">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"/>
+                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="balances∈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="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p4,p5,p6,p7,p2">
+                    <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="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="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="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee&gt;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&gt;0"/>
+        <org.eventb.core.prPred name="p4" 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="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="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="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="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/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="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p5,p8,p6,p4,p7,p2">
+                    <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="cross_chain_transaction" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prIdent name="fee" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway∈GATEWAYS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address) − fee})"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee&gt;0"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
+        <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="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
+                <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="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p3,p1,p6,p10,p8,p4,p9,p2,p5,p7">
+                            <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="balances" 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="p18" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway∈GATEWAYS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address) − fee})"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address) − fee})(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee&gt;0"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="balances(gateway_address) − fee≥0"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address) − fee}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
+        <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="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p3,p5">
+                    <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="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="p12" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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="p13" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="amount&gt;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="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="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/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" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="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="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p7,p5,p3,p6">
+                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="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="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <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="p0" org.eventb.core.predicate="gateway_address∈dom(balances{user_address ↦ balances(user_address)+amount})"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <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="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="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.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prReas name="r1" 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.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with gateway_address=user_address" org.eventb.core.prHyps="p20">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p2,p1,p5,p9,p7,p4,p8,p3,p6,p22">
+                                    <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.prAnte name="(" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
+                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
+                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p9"/>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <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="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬gateway_address=user_address"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="balances(user_address)+amount≥0"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p15" 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="p20" org.eventb.core.predicate="gateway_address=user_address"/>
+        <org.eventb.core.prPred name="p18" 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="p7" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{user_address ↦ balances(user_address)+amount})(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="({user_address} ⩤ balances)(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances{user_address ↦ balances(user_address)+amount}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈dom(balances{user_address ↦ balances(user_address)+amount})"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p10" 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="p22" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eqL1:1"/>
+        <org.eventb.core.prReas name="r3" 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.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_GATEWAY/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p3,p4,p5">
+                    <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="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address)+amount}∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;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="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="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_GATEWAY/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" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
+                <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,p6,p5,p3">
+                    <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="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" 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="p6" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p7" 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="p15" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address)+amount})"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="balances∈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_GATEWAY/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
+                <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="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p2,p1,p5,p8,p6,p3,p7,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="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)+amount≥0"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address)+amount})(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address)+amount}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p10" 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="p18" 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="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address)+amount})"/>
+        <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_GATEWAY/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="CREATE_ADDRESS/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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,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.prAnte>
+        </org.eventb.core.prRule>
+        <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)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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="p12" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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&gt;0"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬address∈dom(balances)"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="CREATE_ADDRESS/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" 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="p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p6,p5,p7">
+                            <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="address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <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="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="address∉dom(balances)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <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∪{address ↦ 0})"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <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="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="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="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.prPred name="p7" org.eventb.core.predicate="¬address∈dom(balances)"/>
+        <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="CREATE_ADDRESS/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <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="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
+                <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="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                        <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="p3,p1,p5,p8,p6,p2,p7,p9">
+                            <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="address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="address∉dom(balances)"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances∪{address ↦ 0}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway_address∈dom(balances∪{address ↦ 0})"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p15" 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="p0" org.eventb.core.predicate="(balances∪{address ↦ 0})(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p10" 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="p18" 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="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬address∈dom(balances)"/>
+        <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="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/grd12;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/grd14;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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.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.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/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" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
+                <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,p5,p3,p6,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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="initial_deposit" 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="p13" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥validator_fee"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="balances{user_address ↦ balances(user_address) − validator_fee}∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" 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="p10" 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&gt;0"/>
+        <org.eventb.core.prPred name="p12" 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="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p7" 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="p15" 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="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances∈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_ETHEREUM_TRANSACTION/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSFER_TRANSACTION/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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSFER_TRANSACTION/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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSFER_TRANSACTION/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <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_ETHEREUM_TRANSFER_TRANSACTION/grd6;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <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_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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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.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.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"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p4,p5,p6,p7,p2">
+                    <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="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="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="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee&gt;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&gt;0"/>
+        <org.eventb.core.prPred name="p4" 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="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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,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.prAnte>
+        </org.eventb.core.prRule>
+        <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)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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="p12" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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&gt;0"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p3,p5">
+                    <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="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="p12" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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="p13" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="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>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="amount&gt;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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="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.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.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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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.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.prProof>
+    <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/grd6;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bps b/BIG/CCTx_Fabric_Ethereum_m2.bps
new file mode 100644
index 0000000000000000000000000000000000000000..22b730481c8abe5bcad7daaf1f48bf5e03b59775
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_m2.bps
@@ -0,0 +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.psFile>
diff --git a/BIG/CCTx_Fabric_Ethereum_m2.bum b/BIG/CCTx_Fabric_Ethereum_m2.bum
new file mode 100644
index 0000000000000000000000000000000000000000..2ce640ce54d126fa0f7bd1093b5729f7f66b1ddb
--- /dev/null
+++ b/BIG/CCTx_Fabric_Ethereum_m2.bum
@@ -0,0 +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&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions balances&#10;&#10;invariants&#10;  @inv11; balances ∈ ADDRESS ⇸ ℕ&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;    then&#10;      @act11; balances ≔ ∅&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends SUBMIT_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends PROCESS_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC extends LISTEN_SMART_CONTRACT_EVENT&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION&#10;    any fee&#10;    where&#10;      @grd11; gateway_address ∈ dom(balances)&#10;      @grd12; balances(gateway_address) ≥ fee&#10;      @grd13; fee &gt; 0&#10;    then&#10;      @act11; balances(gateway_address) ≔ balances(gateway_address) − fee&#10;  end&#10;&#10;  event CREATE_ADDRESS_IN_ETHEREUM&#10;    any address&#10;    where&#10;      @grd1; address ∈ ADDRESS&#10;      @grd2; address ∉ dom(balances)&#10;    then&#10;      @act1; balances ≔ balances ∪ {address ↦ 0}&#10;  end&#10;&#10;  event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM&#10;    any amount address&#10;    where&#10;      @grd1; amount &gt; 0&#10;      @grd2; address ∈ dom(balances)&#10;    then&#10;      @act1; balances(address) ≔ balances(address) + amount&#10;  end&#10;&#10;  event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM&#10;    any validator_fee user_address transfer_amount&#10;    where&#10;      @grd1; user_address ∈ dom(balances)&#10;      @grd2; balances(user_address) ≥ validator_fee + transfer_amount&#10;      @grd3; validator_fee &gt; 0&#10;      @grd4; transfer_amount &gt; 0&#10;      @grd5; gateway_address ∈ dom(balances)&#10;      @grd6; ({user_address,gateway_address} ⩤ balances)∪{gateway_address ↦ balances(gateway_address)+transfer_amount}∪{user_address ↦ balances(user_address) − transfer_amount − validator_fee}∈ADDRESS ⇸ ℕ&#10;    then&#10;      @act1; balances ≔ ({user_address, gateway_address} ⩤ balances) ∪&#10;      &#9;{gateway_address ↦ balances(gateway_address) + transfer_amount} ∪&#10;      &#9;{user_address ↦ balances(user_address) − transfer_amount − validator_fee}&#10;  end&#10;end&#10;" 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>
+    <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.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>
+    <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.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.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.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 &gt; 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 &gt; 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) ∪&#10;      &#9;{gateway_address ↦ balances(gateway_address) + transfer_amount} ∪&#10;      &#9;{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 &gt; 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 &gt; 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.machineFile>
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_c3.bcc b/BIG/CCTx_Preserve_Balance_Gateway_c3.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..7b5989569e356956801be2f2752caad89a00f6e6
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_c3.bcc
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Fabric_Ethereum_c2.bcc|org.eventb.core.scContextFile#CCTx_Fabric_Ethereum_c2" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_c3.buc|org.eventb.core.contextFile#CCTx_Preserve_Balance_Gateway_c3|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="CCTx_Fabric_Ethereum_c2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit&gt;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.theorem="false"/>
+        <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NobR4Ee64F9fr4UDNUA" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.carrierSet#_oy50sLR4Ee64F9fr4UDNUA" org.eventb.core.type="â„™(ADDRESS)"/>
+        <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.type="ADDRESS"/>
+    </org.eventb.core.scInternalContext>
+</org.eventb.core.scContextFile>
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_c3.bpo b/BIG/CCTx_Preserve_Balance_Gateway_c3.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..f256efedc244da20eb0f44171c149ccfe51448cb
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_c3.bpo
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+        <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poIdentifier name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+        <org.eventb.core.poIdentifier name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.poIdentifier name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/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&gt;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="ALLHYP" org.eventb.core.parentSet="/BIG/CCTx_Preserve_Balance_Gateway_c3.bpo|org.eventb.core.poFile#CCTx_Preserve_Balance_Gateway_c3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0"/>
+</org.eventb.core.poFile>
diff --git a/BIG/Fabric_Ethereum_c2.bpr b/BIG/CCTx_Preserve_Balance_Gateway_c3.bpr
similarity index 100%
rename from BIG/Fabric_Ethereum_c2.bpr
rename to BIG/CCTx_Preserve_Balance_Gateway_c3.bpr
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_c3.bps b/BIG/CCTx_Preserve_Balance_Gateway_c3.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_c3.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_c3.buc b/BIG/CCTx_Preserve_Balance_Gateway_c3.buc
new file mode 100644
index 0000000000000000000000000000000000000000..463096bb6cea29a65a6d2dc123ea39eb9e94e825
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_c3.buc
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_DEpsYLSIEe6FipXA1f8GIg" org.eventb.texttools.text_lastmodified="1705420690983" org.eventb.texttools.text_representation="context Cross_chain_transaction_c3 extends Fabric_Ethereum_c2&#10;&#10;end&#10;" version="3">
+    <org.eventb.core.extendsContext name="'" org.eventb.core.target="CCTx_Fabric_Ethereum_c2"/>
+</org.eventb.core.contextFile>
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm b/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..bc53e08babcc3f29d65350e755eeae0d548a60a2
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bcm
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/BIG/CCTx_Fabric_Ethereum_m2.bcm" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/BIG/CCTx_Fabric_Ethereum_c2.bcc" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.seesContext#_wnFu0KsZEe6I4bA9GxwhqQ"/>
+    <org.eventb.core.scInternalContext name="CCTx_Abstract_DLT_c1">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="CCTx_Fabric_Ethereum_c2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/CCTx_Abstract_DLT_c1.bcc|org.eventb.core.scContextFile#CCTx_Abstract_DLT_c1" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="CCTx_Abstract_DLT_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit&gt;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.theorem="false"/>
+        <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NobR4Ee64F9fr4UDNUA" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.carrierSet#_oy50sLR4Ee64F9fr4UDNUA" org.eventb.core.type="â„™(ADDRESS)"/>
+        <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/BIG/CCTx_Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#CCTx_Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.type="ADDRESS"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="CCTx_Abstract_DLT_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/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_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="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)"/>
+    <org.eventb.core.scVariable name="estimated_cross_chain_cost" org.eventb.core.abstract="false" 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#_g0powLX5Ee6ab_EHIz4SJQ" org.eventb.core.type="ℤ"/>
+    <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.variable#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" 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.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_transactiont" 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.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" 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#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
+        <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="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">
+        <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_transactionu" 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|org.eventb.core.refinesEvent#_OouRkLX-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_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>
+    <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#'"/>
+        <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"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT_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#_GTo18LX-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_transactionx" org.eventb.core.source="/BIG/CCTx_Preserve_Balance_Gateway_m3.bum|org.eventb.core.machineFile#CCTx_Preserve_Balance_Gateway_m3|org.eventb.core.event#_GTo18LX-Ee6rT6SCwCdkxA|org.eventb.core.refinesEvent#_RDwwoLX-Ee6rT6SCwCdkxA"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/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.theorem="false"/>
+        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.scParameter name="cross_chain_event" 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.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
+        <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#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM" org.eventb.core.source="/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_transactios" org.eventb.core.label="grd13;" org.eventb.core.predicate="fee&gt;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.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"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="received_cross_chain_transactionz" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="CREATE_ADDRESS_IN_ETHEREUM" org.eventb.core.source="/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.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&gt;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>
+    <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="grd3;" org.eventb.core.predicate="validator_fee&gt;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&gt;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.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_amounv" org.eventb.core.assignment="estimated_cross_chain_cost ≔ transfer_amount" 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#_GTpdBLX-Ee6rT6SCwCdkxA|org.eventb.core.action#_uqjBkLX5Ee6ab_EHIz4SJQ"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo b/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..4c0a95d4968345e9f0594b7eb6f41ec070403a4f
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bpo
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="2">
+    <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)"/>
+        <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+        <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+        <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+        <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
+        <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_c1.buc|org.eventb.core.contextFile#CCTx_Abstract_DLT_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poIdentifier name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+        <org.eventb.core.poIdentifier name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.poIdentifier name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/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&gt;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.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        <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)"/>
+        <org.eventb.core.poIdentifier name="estimated_cross_chain_cost" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.poIdentifier name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        <org.eventb.core.poPredicate name="received_cross_chain_transactiont" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
+        <org.eventb.core.poPredicate name="received_cross_chain_transactionu" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/CCTx_Abstract_DLT_m1.bum|org.eventb.core.machineFile#CCTx_Abstract_DLT_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
+        <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.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.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"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" 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.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" 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.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.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="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.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.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.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>
+    <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.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.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.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.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.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="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.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="PRD3" org.eventb.core.predicate="fee&gt;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.poIdentifier name="address" 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.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.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.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.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&gt;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>
+    <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.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"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" 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.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" 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.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.poIdentifier name="transfer_amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.poIdentifier name="balances'" 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.poPredicate name="PRD2" org.eventb.core.predicate="validator_fee&gt;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&gt;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.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.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.bpr b/BIG/CCTx_Preserve_Balance_Gateway_m3.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..c72131ebdffe64b7733c21777e09d806c8d5451d
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bpr
@@ -0,0 +1,1779 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="REGISTER_CROSS_CHAIN_TRANSACTION/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="REGISTER_CROSS_CHAIN_TRANSACTION/balances/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p10"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="REGISTER_CROSS_CHAIN_TRANSACTION/grd11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv21;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ADDRESS" org.eventb.core.psManual="true">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/>
+                            </org.eventb.core.prAnte>
+                        </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="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom({gateway_address ↦ initial_deposit})"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.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.prProof>
+    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv21;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                <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,p5,p9,p6,p7,p4,p8,p2">
+                    <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="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.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p16" 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="p12" 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="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee&gt;0"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/>
+        <org.eventb.core.prPred name="p15" 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="p0" org.eventb.core.predicate="user_address∈dom(balances{gateway_address ↦ balances(gateway_address) − fee})"/>
+        <org.eventb.core.prPred name="p10" 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="p18" 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="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
+        <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/inv21;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p18"/>
+                <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,p8,p5,p6,p3,p7">
+                    <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="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="any_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="any_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="any_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances{any_address ↦ balances(any_address)+amount})"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="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.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <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="REGISTER_CROSS_CHAIN_TRANSACTION/inv21;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                <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,p8,p6,p7,p3,p5,p9">
+                    <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="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" 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="p16" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥validator_fee+estimated_cross_chain_transaction_fee"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p10" 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="p0" org.eventb.core.predicate="user_address∈dom(balances{user_address ↦ balances(user_address) − validator_fee − estimated_cross_chain_transaction_fee})"/>
+        <org.eventb.core.prPred name="p18" 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="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
+        <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="REGISTER_CROSS_CHAIN_TRANSACTION/grd1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_USER/inv21;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p8,p5,p6,p7,p3">
+                    <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="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <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{user_address ↦ balances(user_address)+amount})"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="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.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <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_USER/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY_USER/balances/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" 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="p0" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" 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="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv22;/WD" org.eventb.core.psManual="true"/>
+    <org.eventb.core.prProof name="INITIALISATION/inv22;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" 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="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p1"/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(∅ ⦂ ℙ(ADDRESS×ℤ))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊥"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv22;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p22">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with user_address=gateway_address" org.eventb.core.prHyps="p22">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p8"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p3,p1,p8,p9,p10,p4,p11,p5,p2,p6,p7,p24">
+                                    <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.prAnte name="(" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
+                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
+                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p8"/>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                </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="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.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p19" 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="p20" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="({gateway_address} ⩤ balances)(user_address)≥0"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p17" 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="p24" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fee&gt;0"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/>
+        <org.eventb.core.prPred name="p18" 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="p21" 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="p23" org.eventb.core.predicate="balances(gateway_address) − fee≥0"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
+        <org.eventb.core.prPred name="p14" 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="p13" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address) − fee})(user_address)≥0"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances{gateway_address ↦ balances(gateway_address) − fee})"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address) − fee}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eqL1:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="REGISTER_CROSS_CHAIN_TRANSACTION/inv22;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" 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.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
+                <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="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p2,p1,p7,p8,p9,p3,p5,p10,p6,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="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="initial_deposit" 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="p19" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="balances(user_address) − validator_fee − estimated_cross_chain_transaction_fee≥0"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" 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="p15" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥validator_fee+estimated_cross_chain_transaction_fee"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="balances{user_address ↦ balances(user_address) − validator_fee − estimated_cross_chain_transaction_fee}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances{user_address ↦ balances(user_address) − validator_fee − estimated_cross_chain_transaction_fee})"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{user_address ↦ balances(user_address) − validator_fee − estimated_cross_chain_transaction_fee})(user_address)≥0"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
+        <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_USER/inv22;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
+                <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="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p3,p1,p6,p7,p8,p4,p2,p5">
+                            <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="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.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{user_address ↦ balances(user_address)+amount})(user_address)≥0"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="balances{user_address ↦ balances(user_address)+amount}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(user_address)+amount≥0"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="user_address∈dom(balances{user_address ↦ balances(user_address)+amount})"/>
+        <org.eventb.core.prPred name="p13" 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="p14" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="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&gt;0"/>
+        <org.eventb.core.prPred name="p10" 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="p19" 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="p6" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances∈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_GATEWAY/inv21;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p8,p5,p6,p7,p3">
+                    <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="amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <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{gateway_address ↦ balances(gateway_address)+amount})"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="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.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <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_GATEWAY/inv22;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with user_address=gateway_address" org.eventb.core.prHyps="p20">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p3,p1,p7,p8,p9,p4,p6,p2,p5,p22">
+                                    <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.prAnte name="(" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
+                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
+                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p7"/>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <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="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="({gateway_address} ⩤ balances)(user_address)≥0"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p15" 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="p22" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="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="p19" 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="p8" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="balances(gateway_address)+amount≥0"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address)+amount}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="user_address∈dom(balances{gateway_address ↦ balances(gateway_address)+amount})"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p10" 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="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address)+amount})(user_address)≥0"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eqL1:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/inv22;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with user_address=address" org.eventb.core.prHyps="p21">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p23"/>
+                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p2,p1,p7,p8,p9,p4,p3,p6,p5,p23">
+                                    <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.prAnte name="(" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p24">
+                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p1">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
+                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p7"/>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <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.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="balances{address ↦ balances(address)+amount}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{address ↦ balances(address)+amount})(user_address)≥0"/>
+        <org.eventb.core.prPred name="p15" 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="p21" org.eventb.core.predicate="user_address=address"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="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="p23" org.eventb.core.predicate="balances(address)≥0"/>
+        <org.eventb.core.prPred name="p19" 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="p8" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="({address} ⩤ balances)(user_address)≥0"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances{address ↦ balances(address)+amount})"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p13" 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&gt;0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬user_address=address"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="balances(address)+amount≥0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eqL1:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="REGISTER_CROSS_CHAIN_TRANSACTION/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.psManual="true">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/grd11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/act11;/SIM" org.eventb.core.psManual="true"/>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION_2/grd11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION_2/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION_2/act11;/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_EVENTS,CROSS_CHAIN_SMART_CONTRACTS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS,TRANSACTIONS" org.eventb.core.psManual="true">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="0" org.eventb.core.prDisplay="Counter-Example found: {balances={(user_address|-&gt;2)}, estimated_cross_chain_transaction_fee=1, validator_fee=1}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p0">
+                <org.eventb.core.prRule name="r1" 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="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prRule name="r2" 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="p13"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p1"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p4"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="estimated_cross_chain_transaction_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.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        <org.eventb.core.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="p1" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥validator_fee"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="user_address≠gateway_address"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="balances(user_address)≥estimated_cross_chain_transaction_fee+validator_fee"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="balances{user_address ↦ balances(user_address) − validator_fee − estimated_cross_chain_transaction_fee}=balances{user_address ↦ balances(user_address) − validator_fee}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="de.prob.eventb.disprover.core.disproverReasoner"/>
+        <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.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/balances/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p10"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_cross_chain_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <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_ETHEREUM_TRANSACTION_2/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.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION_2/balances/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p8"/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" 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="p0" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" 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="p4" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/act1;/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ADDRESS">
+        <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="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
+                <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="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <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="p6,p2,p5,p3,p8,p4,p7,p9">
+                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        <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.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="balances(user_address)≥validator_fee"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" 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="p0" org.eventb.core.predicate="balances{user_address ↦ balances(user_address) − estimated_cross_chain_transaction_fee}=balances{user_address ↦ balances(user_address) − validator_fee}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address≠gateway_address"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥estimated_cross_chain_transaction_fee+validator_fee"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p10" 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="p18" 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="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(user_address)=balances(user_address) − validator_fee"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
+        <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.autoRewritesL4:0"/>
+        <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_ETHEREUM_TRANSACTION/act12;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" 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="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/act13;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/balances(user_address)'/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/balances(user_address);/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/grd1;/GRD"/>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/grd2;/GRD"/>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/grd3;/GRD"/>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION/balances(gateway_address)'/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="user_address≠gateway_address">
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p6" 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="p5" org.eventb.core.predicate="¬user_address=gateway_address">
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSACTION_2/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="user_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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="0∈ℕ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="SUBMIT_ETHEREUM_TRANSFER_TRANSACTION/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+        <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="p1"/>
+        <org.eventb.core.prIdent name="transfer_amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="transfer_amount∈ℕ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="transfer_amount&gt;0"/>
+        <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/inv31;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+        <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="p1"/>
+        <org.eventb.core.prIdent name="transfer_amount" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="transfer_amount∈ℕ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="transfer_amount&gt;0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bps b/BIG/CCTx_Preserve_Balance_Gateway_m3.bps
new file mode 100644
index 0000000000000000000000000000000000000000..78d1a20a875aa14ec7592e8d242358cb878154d3
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bps
@@ -0,0 +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.psFile>
diff --git a/BIG/CCTx_Preserve_Balance_Gateway_m3.bum b/BIG/CCTx_Preserve_Balance_Gateway_m3.bum
new file mode 100644
index 0000000000000000000000000000000000000000..ca6c443c00f59d837e1e2aed4caff00841731043
--- /dev/null
+++ b/BIG/CCTx_Preserve_Balance_Gateway_m3.bum
@@ -0,0 +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&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions&#10;received_cross_chain_transactions balances estimated_cross_chain_cost&#10;&#10;invariants&#10;&#9;@inv31: estimated_cross_chain_cost ∈ ℕ&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  &#9;then&#10;  &#9;&#9;@act31: estimated_cross_chain_cost ≔ 0&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC extends SUBSCRIBE_SMART_CONTRACT_EVENTS_IN_FABRIC&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends SUBMIT_CROSS_CHAIN_TRANSACTION_IN_FABRIC&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC extends PROCESS_CROSS_CHAIN_TRANSACTION_IN_FABRIC&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC extends LISTEN_SMART_CONTRACT_EVENT_IN_FABRIC&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM extends SUBMIT_CROSS_CHAIN_TRANSACTION_TO_ETHEREUM&#10;&#9;where&#10;&#9;&#9;@grd31: fee ≤ estimated_cross_chain_cost&#10;  end&#10;&#10;  event CREATE_ADDRESS_IN_ETHEREUM extends CREATE_ADDRESS_IN_ETHEREUM&#10;  end&#10;&#10;  event DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM extends DEPOSIT_CRYPTOCURRENCY_IN_ETHEREUM&#10;  &#9;where&#10;  &#9;&#9;@grd31: address ≠ gateway_address&#10;  end&#10;&#10;  event SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM extends SUBMIT_TRANSFER_TRANSACTION_IN_ETHEREUM&#10;  then&#10;  &#9;@act31: estimated_cross_chain_cost ≔ transfer_amount&#10;  end&#10;end&#10;" 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>
+    <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.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>
+    <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.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.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.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.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.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>
+    <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.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.machineFile>
diff --git a/BIG/Ethereum_Fabric_c2.bcc b/BIG/Ethereum_Fabric_c2.bcc
deleted file mode 100644
index efdd9db8709b5722c8ff427ebaf05ab2a8367c17..0000000000000000000000000000000000000000
--- a/BIG/Ethereum_Fabric_c2.bcc
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
-    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/BIG_c1.bcc|org.eventb.core.scContextFile#BIG_c1" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.extendsContext#'"/>
-    <org.eventb.core.scInternalContext name="BIG_c1">
-        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scAxiom name="BIG_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_e542gK75Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scAxiom name="BIG_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="gateway_user∈USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_-6gTUK75Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scConstant name="write" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.constant#_cent8a75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
-    <org.eventb.core.scCarrierSet name="USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.carrierSet#_51xqoK74Ee6N-vMrFZcPfQ" org.eventb.core.type="â„™(USERS)"/>
-    <org.eventb.core.scConstant name="read" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.constant#_cent8K75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
-    <org.eventb.core.scCarrierSet name="PERMISSIONS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.carrierSet#_rDT64K8DEe6CsKD2nJu6WQ" org.eventb.core.type="â„™(PERMISSIONS)"/>
-    <org.eventb.core.scConstant name="gateway_user" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.constant#_ceoVAK75Ee6N-vMrFZcPfQ" org.eventb.core.type="USERS"/>
-</org.eventb.core.scContextFile>
diff --git a/BIG/Ethereum_Fabric_m2.bcm b/BIG/Ethereum_Fabric_m2.bcm
deleted file mode 100644
index 42fa0b03c46ab3055476b148e7749c98f1f5ee59..0000000000000000000000000000000000000000
--- a/BIG/Ethereum_Fabric_m2.bcm
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
-    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.refinesMachine#'"/>
-    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/BIG/Ethereum_Fabric_c2.bcc" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.seesContext#_MuSzUK76Ee6N-vMrFZcPfQ"/>
-    <org.eventb.core.scInternalContext name="BIG_c1">
-        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scInternalContext name="Ethereum_Fabric_c2">
-        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/BIG_c1.bcc|org.eventb.core.scContextFile#BIG_c1" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.extendsContext#'"/>
-        <org.eventb.core.scAxiom name="BIG_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_e542gK75Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="BIG_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="gateway_user∈USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_-6gTUK75Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="write" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.constant#_cent8a75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
-        <org.eventb.core.scCarrierSet name="USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.carrierSet#_51xqoK74Ee6N-vMrFZcPfQ" org.eventb.core.type="â„™(USERS)"/>
-        <org.eventb.core.scConstant name="read" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.constant#_cent8K75Ee6N-vMrFZcPfQ" org.eventb.core.type="PERMISSIONS"/>
-        <org.eventb.core.scCarrierSet name="PERMISSIONS" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.carrierSet#_rDT64K8DEe6CsKD2nJu6WQ" org.eventb.core.type="â„™(PERMISSIONS)"/>
-        <org.eventb.core.scConstant name="gateway_user" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.constant#_ceoVAK75Ee6N-vMrFZcPfQ" org.eventb.core.type="USERS"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scInvariant name="BIG_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c5" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="Ethereum_Fabric_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="authenticated_users⊆USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_Vz5s8K76Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="Ethereum_Fabric_c6" org.eventb.core.label="inv14;" org.eventb.core.predicate="write_grant∈authenticated_users ↔ {write}" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_scPcsK8DEe6CsKD2nJu6WQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
-    <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.variable#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
-    <org.eventb.core.scVariable name="authenticated_users" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.variable#_Vz67EK76Ee6N-vMrFZcPfQ" org.eventb.core.type="â„™(USERS)"/>
-    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactiont" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
-        <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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqS">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionu" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqS|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqT">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqT|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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|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" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqU">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionw" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqU|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
-        <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
-    </org.eventb.core.scEvent>
-    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqV">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionx" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqV|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_DMOGsKpFEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_AezaEKmIEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
-        <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
-    </org.eventb.core.scEvent>
-    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ" 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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQapbEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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="user∈authenticated_users" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_9p1UoK8EEe6CsKD2nJu6WQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scParameter name="user" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.action#_OatxgK79Ee6N-vMrFZcPfQ"/>
-    </org.eventb.core.scEvent>
-</org.eventb.core.scMachineFile>
diff --git a/BIG/Ethereum_Fabric_m2.bpo b/BIG/Ethereum_Fabric_m2.bpo
deleted file mode 100644
index 06fdae67a4cceed1e4d565c3d087cc14f8c708ae..0000000000000000000000000000000000000000
--- a/BIG/Ethereum_Fabric_m2.bpo
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.poFile org.eventb.core.poStamp="45">
-    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="27">
-        <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-        <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poIdentifier name="USERS" org.eventb.core.type="â„™(USERS)"/>
-        <org.eventb.core.poIdentifier name="PERMISSIONS" org.eventb.core.type="â„™(PERMISSIONS)"/>
-        <org.eventb.core.poIdentifier name="write" org.eventb.core.type="PERMISSIONS"/>
-        <org.eventb.core.poIdentifier name="read" org.eventb.core.type="PERMISSIONS"/>
-        <org.eventb.core.poIdentifier name="gateway_user" org.eventb.core.type="USERS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="partition(PERMISSIONS,{read},{write})" org.eventb.core.source="/BIG/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#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/Ethereum_Fabric_c2.buc|org.eventb.core.contextFile#Ethereum_Fabric_c2|org.eventb.core.axiom#_-6gTUK75Ee6N-vMrFZcPfQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="41">
-        <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
-        <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)"/>
-        <org.eventb.core.poIdentifier name="authenticated_users" org.eventb.core.type="â„™(USERS)"/>
-        <org.eventb.core.poPredicate name="received_cross_chain_transactiont" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="received_cross_chain_transactionu" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="received_cross_chain_transactionv" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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="44">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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="44">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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="44">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_scPcsK8DEe6CsKD2nJu6WQ"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_scPcsK8DEe6CsKD2nJu6WQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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="45">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="41">
-        <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="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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="41"/>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="45">
-        <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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="45">
-        <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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="45">
-        <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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="45">
-        <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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_MgekUK77Ee6N-vMrFZcPfQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_6-1AkK78Ee6N-vMrFZcPfQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv16;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv16;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="45">
-        <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="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/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_9p1UoK8EEe6CsKD2nJu6WQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/Ethereum_Fabric_m2.bpo|org.eventb.core.poFile#Ethereum_Fabric_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="45">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="authenticated_users⊆USERS" org.eventb.core.source="/BIG/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#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/Ethereum_Fabric_m2.bum|org.eventb.core.machineFile#Ethereum_Fabric_m2|org.eventb.core.invariant#_2EqLoK8HEe6CsKD2nJu6WQ"/>
-    </org.eventb.core.poPredicateSet>
-</org.eventb.core.poFile>
diff --git a/BIG/Ethereum_Fabric_m2.bps b/BIG/Ethereum_Fabric_m2.bps
deleted file mode 100644
index 4be23d04c770cf1cc9e303edccbea4f759fc0bce..0000000000000000000000000000000000000000
--- a/BIG/Ethereum_Fabric_m2.bps
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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="44" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="44" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="INITIALISATION/inv14;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="44" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="INITIALISATION/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="45" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="45" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="45" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv16;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="45" org.eventb.core.psManual="false"/>
-</org.eventb.core.psFile>
diff --git a/BIG/Fabric_Ethereum_c2.bcc b/BIG/Fabric_Ethereum_c2.bcc
deleted file mode 100644
index c6901de2fd1cf89845ad88e52311a8f4d322d4d0..0000000000000000000000000000000000000000
--- a/BIG/Fabric_Ethereum_c2.bcc
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase">
-    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/BIG_c1.bcc|org.eventb.core.scContextFile#BIG_c1" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/>
-    <org.eventb.core.scInternalContext name="BIG_c1">
-        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scAxiom name="BIG_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scAxiom name="BIG_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy4mkLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NobR4Ee64F9fr4UDNUA" org.eventb.core.type="ℤ"/>
-    <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.carrierSet#_oy50sLR4Ee64F9fr4UDNUA" org.eventb.core.type="â„™(ADDRESS)"/>
-    <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.type="ADDRESS"/>
-</org.eventb.core.scContextFile>
diff --git a/BIG/Fabric_Ethereum_m2.bcm b/BIG/Fabric_Ethereum_m2.bcm
deleted file mode 100644
index b585607144f8a45633cb7a29f3ed7900757a0bf1..0000000000000000000000000000000000000000
--- a/BIG/Fabric_Ethereum_m2.bcm
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
-    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.refinesMachine#'"/>
-    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/BIG/Fabric_Ethereum_c2.bcc" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.seesContext#_wnFu0KsZEe6I4bA9GxwhqQ"/>
-    <org.eventb.core.scInternalContext name="BIG_c1">
-        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1;" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2;" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3;" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="source_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_NmUHEKmBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_B7Fx4KmIEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.scConstant name="gateway" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_t3pvIKo_Ee6I4bA9GxwhqQ" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_lsmHUKpBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_bUpUwKmAEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.scConstant name="target_smart_contract" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.constant#_kx61gapGEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.scCarrierSet name="TRANSACTIONS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_OLUJEKsXEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.scCarrierSet name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.carrierSet#_ISeO4KmBEe6I4bA9GxwhqQ" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scInternalContext name="Fabric_Ethereum_c2">
-        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/BIG/BIG_c1.bcc|org.eventb.core.scContextFile#BIG_c1" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.extendsContext#'"/>
-        <org.eventb.core.scAxiom name="BIG_c2" org.eventb.core.label="axm11;" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAxiom name="BIG_c3" org.eventb.core.label="axm12;" org.eventb.core.predicate="initial_deposit&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy4mkLR4Ee64F9fr4UDNUA" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scConstant name="initial_deposit" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NobR4Ee64F9fr4UDNUA" org.eventb.core.type="ℤ"/>
-        <org.eventb.core.scCarrierSet name="ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.carrierSet#_oy50sLR4Ee64F9fr4UDNUA" org.eventb.core.type="â„™(ADDRESS)"/>
-        <org.eventb.core.scConstant name="gateway_address" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.constant#_oy5NoLR4Ee64F9fr4UDNUA" org.eventb.core.type="ADDRESS"/>
-    </org.eventb.core.scInternalContext>
-    <org.eventb.core.scInvariant name="BIG_c2" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c3" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c4" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_Q6dKkKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_c5" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_c7TQ0KpBEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="Fabric_Ethereum_c3" org.eventb.core.label="inv11;" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="Fabric_Ethereum_c4" org.eventb.core.label="inv12;" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/>
-    <org.eventb.core.scInvariant name="Fabric_Ethereum_c5" org.eventb.core.label="inv13;" org.eventb.core.predicate="balances(gateway_address)≥0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw" 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/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|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/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.variable#_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
-    <org.eventb.core.scVariable name="received_cross_chain_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#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/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#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/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.variable#_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
-    <org.eventb.core.scVariable name="received_transactions" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.variable#_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
-    <org.eventb.core.scEvent name="received_cross_chain_transactiont" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactiont" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.scAction name="'" org.eventb.core.assignment="received_transactions ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_SAxOQKmDEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="(" org.eventb.core.assignment="triggered_events ≔ ∅ ⦂ ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_TlWCkamHEe6I4bA9GxwhqQ"/>
-        <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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'|org.eventb.core.action#_J6KjYKpbEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="," org.eventb.core.assignment="balances ≔ {gateway_address ↦ initial_deposit}" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#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" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqS">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionu" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqS|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqT">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionv" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqT|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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.action#_AeyzAKmIEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|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" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqU">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionw" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqU|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_iUmtQKpAEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event∉triggered_events[{source_smart_contract}]" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.guard#_1SOwwKmDEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAction name="cross_chain_evenu" org.eventb.core.assignment="triggered_events ≔ triggered_events∪{source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_I9G5gapAEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="cross_chain_evenv" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.action#_gaDEIKmHEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_AezaEamIEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
-        <org.eventb.core.scParameter name="transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_TlWCkKmHEe6I4bA9GxwhqQ|org.eventb.core.parameter#_TlWCk6mHEe6I4bA9GxwhqQ" org.eventb.core.type="TRANSACTIONS"/>
-    </org.eventb.core.scEvent>
-    <org.eventb.core.scEvent name="received_cross_chain_transactionx" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqV">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactionx" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqV|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_DMOGsKpFEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract∈subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_AezaEKmIEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∉gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scAction name="cross_chain_transactioo" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions∪{gateway ↦ cross_chain_transaction}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_8T0y4KpBEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scAction name="cross_chain_transactiop" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.label="act2;" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.action#_NAy78KpBEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="cross_chain_event" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8VKsIqpAEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_EVENTS"/>
-        <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.parameter#_8T1Z8qpBEe6I4bA9GxwhqQ" org.eventb.core.type="CROSS_CHAIN_TRANSACTIONS"/>
-    </org.eventb.core.scEvent>
-    <org.eventb.core.scEvent name="received_cross_chain_transactiony" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW">
-        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/BIG/BIG_m1.bcm|org.eventb.core.scMachineFile#BIG_m1|org.eventb.core.scEvent#received_cross_chain_transactiony" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.refinesEvent#'"/>
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ" 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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.action#_G1dcQapbEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.scParameter name="cross_chain_transaction" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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="balances(gateway_address)≥fee" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_LUARQLR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name="cross_chain_transactior" org.eventb.core.label="grd12;" org.eventb.core.predicate="fee&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scParameter name="fee" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.parameter#_LUARQbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/>
-        <org.eventb.core.scAction name="cross_chain_transactios" org.eventb.core.assignment="balances ≔ balances{gateway_address ↦ balances(gateway_address) − fee}" org.eventb.core.label="act11;" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|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="DEPOSIT_CRYPTOCURRENCY" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw">
-        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address∈ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|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="amount&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.guard#_3N1_E7R5Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3;" org.eventb.core.predicate="user_address∈dom(balances)" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.guard#_XCh4cLR6Ee6ab9MA5fTFUw" org.eventb.core.theorem="false"/>
-        <org.eventb.core.scParameter name="amount" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.parameter#_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.type="ℤ"/>
-        <org.eventb.core.scParameter name="user_address" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.parameter#_3N1_FLR5Ee6ab9MA5fTFUw" org.eventb.core.type="ADDRESS"/>
-        <org.eventb.core.scAction name="user_addrest" org.eventb.core.assignment="balances ≔ balances{user_address ↦ balances(user_address)+amount}" org.eventb.core.label="act1;" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.scEvent>
-</org.eventb.core.scMachineFile>
diff --git a/BIG/Fabric_Ethereum_m2.bpo b/BIG/Fabric_Ethereum_m2.bpo
deleted file mode 100644
index 524225e0bc3fe4c1facbc054d6caead0c5e63431..0000000000000000000000000000000000000000
--- a/BIG/Fabric_Ethereum_m2.bpo
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.poFile org.eventb.core.poStamp="20">
-    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="16">
-        <org.eventb.core.poIdentifier name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
-        <org.eventb.core.poIdentifier name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
-        <org.eventb.core.poIdentifier name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
-        <org.eventb.core.poIdentifier name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-        <org.eventb.core.poIdentifier name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-        <org.eventb.core.poIdentifier name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poIdentifier name="gateway" org.eventb.core.type="GATEWAYS"/>
-        <org.eventb.core.poIdentifier name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTT" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-IUKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTU" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYKsXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTV" org.eventb.core.predicate="gateway∈GATEWAYS" org.eventb.core.source="/BIG/BIG_c1.buc|org.eventb.core.contextFile#BIG_c1|org.eventb.core.axiom#_j4-vYasXEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poIdentifier name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
-        <org.eventb.core.poIdentifier name="initial_deposit" org.eventb.core.type="ℤ"/>
-        <org.eventb.core.poIdentifier name="gateway_address" org.eventb.core.type="ADDRESS"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTW" org.eventb.core.predicate="gateway_address∈ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy3_gLR4Ee64F9fr4UDNUA"/>
-        <org.eventb.core.poPredicate name="CROSS_CHAIN_SMART_CONTRACTX" org.eventb.core.predicate="initial_deposit&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_c2.buc|org.eventb.core.contextFile#Fabric_Ethereum_c2|org.eventb.core.axiom#_oy4mkLR4Ee64F9fr4UDNUA"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="17">
-        <org.eventb.core.poIdentifier name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
-        <org.eventb.core.poIdentifier name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
-        <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)"/>
-        <org.eventb.core.poIdentifier name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
-        <org.eventb.core.poPredicate name="received_cross_chain_transactiont" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_o6juoKviEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="received_cross_chain_transactionu" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_d6dcQKmHEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poPredicate name="received_cross_chain_transactionv" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.invariant#_G1eDUKpbEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poSequent name="inv13;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="INITIALISATION/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="{gateway_address ↦ initial_deposit}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4|org.eventb.core.poPredicate#PRD0"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="INITIALISATION/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom({gateway_address ↦ initial_deposit})" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#INITIALISATION\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4|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="17">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactiont"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="{gateway_address ↦ initial_deposit}(gateway_address)≥0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#'"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqR"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#INITIALISATION\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="17">
-        <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="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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiont" org.eventb.core.poStamp="17"/>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="17">
-        <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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionu" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ source_smart_contract∉subscriptions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="17">
-        <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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionv" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="transaction∈TRANSACTIONS" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_58YTEKmAEe6I4bA9GxwhqQ|org.eventb.core.guard#_HCtL8KmIEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="17">
-        <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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionw" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ transaction∈received_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="17">
-        <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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionx" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event∈triggered_events" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_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/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_8VKFEKpAEe6I4bA9GxwhqQ|org.eventb.core.guard#_x51DwKpCEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/grd11;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="18">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactiony'"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_LUARQLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_LUARQLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactiony'"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="19">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#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/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4|org.eventb.core.poPredicate#PRD0"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="19">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#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{gateway_address ↦ balances(gateway_address) − fee})" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4|org.eventb.core.poPredicate#PRD1"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="19">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#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})(gateway_address)≥0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW"/>
-        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/act11;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="19">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#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/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.action#_LT_qMLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#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/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="18">
-        <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="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_transactiony'" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactiony" org.eventb.core.poStamp="0">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions" org.eventb.core.source="/BIG/BIG_m1.bum|org.eventb.core.machineFile#BIG_m1|org.eventb.core.event#_0sEN8KpaEe6I4bA9GxwhqQ|org.eventb.core.guard#_tUzFcKpaEe6I4bA9GxwhqQ"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactiony" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTHYPreceived_cross_chain_transactiony'" org.eventb.core.poStamp="19">
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="balances(gateway_address)≥fee" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_LUARQLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="fee&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_sUpukKl_Ee6I4bA9GxwhqW|org.eventb.core.guard#_m9IJYLR5Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY/inv11;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="20">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="balances{user_address ↦ balances(user_address)+amount}∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY\/inv11;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4|org.eventb.core.poPredicate#PRD0"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY/inv12;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="20">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="gateway_address∈dom(balances{user_address ↦ balances(user_address)+amount})" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY\/inv12;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4|org.eventb.core.poPredicate#PRD1"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY/inv13;/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="20">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(balances{user_address ↦ balances(user_address)+amount})(gateway_address)≥0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poSequent#DEPOSIT_CRYPTOCURRENCY\/inv13;\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
-        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poSequent name="DEPOSIT_CRYPTOCURRENCY/act1;/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="20">
-        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/>
-        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.action#_3N1_EbR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTALLHYPreceived_cross_chain_transactionz"/>
-    </org.eventb.core.poSequent>
-    <org.eventb.core.poPredicateSet name="EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|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="user_address" org.eventb.core.type="ADDRESS"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="EVTALLHYPreceived_cross_chain_transactionz" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#EVTIDENTreceived_cross_chain_transactionz" org.eventb.core.poStamp="20">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="user_address∈ADDRESS" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.guard#_3N1_ErR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="amount&gt;0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.guard#_3N1_E7R5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="user_address∈dom(balances)" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.event#_3N1_ELR5Ee6ab9MA5fTFUw|org.eventb.core.guard#_XCh4cLR6Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="HYPFabric_Ethereum_c4" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
-        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_BruvcLR5Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="gateway_address∈dom(balances)" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kLR5Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.poPredicateSet>
-    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/BIG/Fabric_Ethereum_m2.bpo|org.eventb.core.poFile#Fabric_Ethereum_m2|org.eventb.core.poPredicateSet#HYPFabric_Ethereum_c4" org.eventb.core.poStamp="17">
-        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="balances(gateway_address)≥0" org.eventb.core.source="/BIG/Fabric_Ethereum_m2.bum|org.eventb.core.machineFile#Fabric_Ethereum_m2|org.eventb.core.invariant#_Brv9kbR5Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.poPredicateSet>
-</org.eventb.core.poFile>
diff --git a/BIG/Fabric_Ethereum_m2.bps b/BIG/Fabric_Ethereum_m2.bps
deleted file mode 100644
index 3e6dafb32c2a72d0ddf56a28092bab65fd1e7edd..0000000000000000000000000000000000000000
--- a/BIG/Fabric_Ethereum_m2.bps
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<org.eventb.core.psFile>
-    <org.eventb.core.psStatus name="inv13;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="17" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="INITIALISATION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="17" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="INITIALISATION/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="17" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="17" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/grd11;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="18" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="19" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="19" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="19" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="19" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="20" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY/inv12;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="20" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="20" org.eventb.core.psManual="false"/>
-    <org.eventb.core.psStatus name="DEPOSIT_CRYPTOCURRENCY/act1;/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="20" org.eventb.core.psManual="false"/>
-</org.eventb.core.psFile>
diff --git a/BIG/Fabric_Ethereum_m2.bum b/BIG/Fabric_Ethereum_m2.bum
deleted file mode 100644
index 3e4f277ee37db105abbcb954be1b69596629ec41..0000000000000000000000000000000000000000
--- a/BIG/Fabric_Ethereum_m2.bum
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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="_XCO9obR6Ee6ab9MA5fTFUw" org.eventb.texttools.text_lastmodified="1705414811994" org.eventb.texttools.text_representation="machine Fabric_Ethereum_m2 refines BIG_m1  sees Fabric_Ethereum_c2&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions&#10;received_cross_chain_transactions balances&#10;&#10;invariants&#10;  @inv11; balances ∈ ADDRESS ⇸ ℕ&#10;  @inv12; gateway_address ∈ dom(balances)&#10;  @inv13; balances(gateway_address) ≥ 0&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  &#9;then&#10;  &#9;&#9;@act11: balances ≔ {gateway_address ↦ initial_deposit}&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS extends SUBSCRIBE_SMART_CONTRACT_EVENTS&#10;  end&#10;&#10;  event SUBMIT_CROSS_CHAIN_TRANSACTION extends SUBMIT_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION extends PROCESS_CROSS_CHAIN_TRANSACTION&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT extends LISTEN_SMART_CONTRACT_EVENT&#10;  end&#10;&#10;  event GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION extends GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION&#10;  &#9;any fee&#10;  &#9;where&#10;  &#9;&#9;@grd11: balances(gateway_address) ≥ fee&#10;  &#9;&#9;@grd12: fee &gt; 0&#10;  &#9;then&#10;  &#9;&#9;@act11: balances(gateway_address) ≔ balances(gateway_address) − fee&#10;  end&#10;&#10;  event DEPOSIT_CRYPTOCURRENCY&#10;  &#9;any user_address amount&#10;  &#9;where&#10;  &#9;&#9;@grd1: user_address ∈ ADDRESS&#10;  &#9;&#9;@grd2: amount &gt; 0&#10;  &#9;&#9;@grd3: user_address ∈ dom(balances)&#10;  &#9;then&#10;  &#9;&#9;@act1: balances(user_address) ≔ balances(user_address) + amount&#10;  end&#10;end&#10;" version="5">
-    <org.eventb.core.refinesMachine name="'" org.eventb.core.target="BIG_m1"/>
-    <org.eventb.core.seesContext name="_wnFu0KsZEe6I4bA9GxwhqQ" org.eventb.core.target="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="_XCO9irR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.action name="_BrsTMLR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="balances ≔ {gateway_address ↦ initial_deposit}" org.eventb.core.generated="false" org.eventb.core.label="act11;" org.eventb.emf.persistence.emf_id="_XCO9ibR6Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqS" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" org.eventb.emf.persistence.emf_id="_XCO9jLR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBSCRIBE_SMART_CONTRACT_EVENTS"/>
-    </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqT" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="SUBMIT_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_XCO9jrR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="SUBMIT_CROSS_CHAIN_TRANSACTION"/>
-    </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqU" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_XCO9kLR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="PROCESS_CROSS_CHAIN_TRANSACTION"/>
-    </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqV" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.emf.persistence.emf_id="_XCO9krR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="LISTEN_SMART_CONTRACT_EVENT"/>
-    </org.eventb.core.event>
-    <org.eventb.core.event name="_sUpukKl_Ee6I4bA9GxwhqW" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_XCO9mLR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.refinesEvent name="'" 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="_XCO9l7R6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.guard name="_LUARQLR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd11;" org.eventb.core.predicate="balances(gateway_address) ≥ fee" org.eventb.emf.persistence.emf_id="_XCO9lbR6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.guard name="_m9IJYLR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd12;" org.eventb.core.predicate="fee &gt; 0" org.eventb.emf.persistence.emf_id="_XCO9lrR6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.parameter name="_LUARQbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="fee" org.eventb.emf.persistence.emf_id="_XCO9lLR6Ee6ab9MA5fTFUw"/>
-    </org.eventb.core.event>
-    <org.eventb.core.event name="_3N1_ELR5Ee6ab9MA5fTFUw" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="DEPOSIT_CRYPTOCURRENCY" org.eventb.emf.persistence.emf_id="_XCO9oLR6Ee6ab9MA5fTFUw">
-        <org.eventb.core.action name="_3N1_EbR5Ee6ab9MA5fTFUw" org.eventb.core.assignment="balances(user_address) ≔ balances(user_address) + amount" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_XCO9n7R6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.guard name="_3N1_ErR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="user_address ∈ ADDRESS" org.eventb.emf.persistence.emf_id="_XCO9nLR6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.guard name="_3N1_E7R5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="amount &gt; 0" org.eventb.emf.persistence.emf_id="_XCO9nbR6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.guard name="_XCh4cLR6Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="user_address ∈ dom(balances)" org.eventb.emf.persistence.emf_id="_XCO9nrR6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.parameter name="_3N1_FLR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="user_address" org.eventb.emf.persistence.emf_id="_XCO9mrR6Ee6ab9MA5fTFUw"/>
-        <org.eventb.core.parameter name="_3N1_FbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.identifier="amount" org.eventb.emf.persistence.emf_id="_XCO9m7R6Ee6ab9MA5fTFUw"/>
-    </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="_XCO9hrR6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.invariant name="_Brv9kLR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="inv12;" org.eventb.core.predicate="gateway_address ∈ dom(balances)" org.eventb.emf.persistence.emf_id="_XCO9h7R6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.invariant name="_Brv9kbR5Ee6ab9MA5fTFUw" org.eventb.core.generated="false" org.eventb.core.label="inv13;" org.eventb.core.predicate="balances(gateway_address) ≥ 0" org.eventb.emf.persistence.emf_id="_XCO9iLR6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.variable name="_SAycYamDEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_XCO9gLR6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.variable name="_YvZFkamHEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_XCO9gbR6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.variable name="_I9HgkapAEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_XCO9grR6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.variable name="_8T2BAKpBEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_XCO9g7R6Ee6ab9MA5fTFUw"/>
-    <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="_XCO9hLR6Ee6ab9MA5fTFUw"/>
-    <org.eventb.core.variable name="_DPQj0KsaEe6I4bA9GxwhqQ" org.eventb.core.generated="false" org.eventb.core.identifier="balances" org.eventb.emf.persistence.emf_id="_XCO9hbR6Ee6ab9MA5fTFUw"/>
-</org.eventb.core.machineFile>
diff --git a/BIG/Future_Payments_c2.bpr b/BIG/Future_Payments_c2.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/BIG/Future_Payments_c2.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/BIG/Fabric_Ethereum_m2.bpr b/BIG/Future_Payments_m2.bpr
similarity index 64%
rename from BIG/Fabric_Ethereum_m2.bpr
rename to BIG/Future_Payments_m2.bpr
index 2765d18a88cf86686b697c36fdbb8e9ca0d04bcb..c895d81ffb98b437f2bb407c95529294786a68f2 100644
--- a/BIG/Fabric_Ethereum_m2.bpr
+++ b/BIG/Future_Payments_m2.bpr
@@ -1,29 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <org.eventb.core.prFile version="1">
-    <org.eventb.core.prProof name="INITIALISATION/inv1;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
-        <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
-            <org.eventb.core.prAnte name="'">
-                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
-                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
-                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
-            </org.eventb.core.prAnte>
-        </org.eventb.core.prRule>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
-            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
-            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
-        </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="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="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
-            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        </org.eventb.core.prPred>
-        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
-    </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="inv13;/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.prProof name="inv14;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
         <org.eventb.core.lang name="L"/>
         <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
             <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
@@ -41,242 +18,237 @@
         <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="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.isFunGoal"/>
-        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
     </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="INITIALISATION/inv11;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ADDRESS">
+    <org.eventb.core.prProof name="INITIALISATION/inv12;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
         <org.eventb.core.lang name="L"/>
         <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
             <org.eventb.core.prAnte name="'">
-                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
-                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
-                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
-                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
-                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
-                </org.eventb.core.prRule>
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
-        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
-        <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
-        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway∈GATEWAYS">
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="initial_deposit&gt;0"/>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="{gateway_address ↦ initial_deposit}∈ADDRESS ⇸ ℕ"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prReas name="r1" 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.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="ADDRESS">
+    <org.eventb.core.prProof name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
         <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
-            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
-        <org.eventb.core.prIdent name="gateway_address" 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="⊤"/>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom({gateway_address ↦ initial_deposit})"/>
-        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
-        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="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="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
     </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="INITIALISATION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ADDRESS">
+    <org.eventb.core.prProof name="INITIALISATION/inv14;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
         <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
-            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
-                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="p1"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
-        <org.eventb.core.prIdent name="gateway_address" 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="initial_deposit&gt;0"/>
-        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit≥0"/>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="{gateway_address ↦ initial_deposit}(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway_address∈dom({gateway_address ↦ initial_deposit})"/>
-        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
-        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="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="p1" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
     </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/grd11;/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.prProof name="REGISTER/grd11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
         <org.eventb.core.lang name="L"/>
         <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
             <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
                 <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
-                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
-                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""/>
                     </org.eventb.core.prAnte>
                 </org.eventb.core.prRule>
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
         <org.eventb.core.prIdent name="balances" 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="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="p7" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="initial_deposit∈ℕ">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_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.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="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/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.prProof name="inv16;/WD"/>
+    <org.eventb.core.prProof name="INITIALISATION/inv15;/INV"/>
+    <org.eventb.core.prProof name="INITIALISATION/inv16;/INV"/>
+    <org.eventb.core.prProof name="REGISTER/inv12;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
         <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+        <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="HIDE0" org.eventb.core.prHyps="p8"/>
-                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
-                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
-                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
-                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
-                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
-                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
-                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
-                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p7,p5,p3,p6">
-                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/>
+                <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="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p15"/>
+                    </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="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="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
-        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
-        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
-            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-            <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
-        </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
-            <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
-            <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
-            <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
-        </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
-        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;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 name="p8" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="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 name="p1" org.eventb.core.predicate="initial_deposit∈ℕ">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
         </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.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 name="p0" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
         </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="p5" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
-        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
-        <org.eventb.core.prReas name="r1" 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.typeRewrites:1"/>
-    </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/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" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
-        <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
-            <org.eventb.core.prAnte name="'">
-                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
-                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
-                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
-                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
-                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
-                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
-                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
-                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
-                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p7,p5,p3,p6">
-                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
-                </org.eventb.core.prRule>
-            </org.eventb.core.prAnte>
-        </org.eventb.core.prRule>
-        <org.eventb.core.prIdent name="balances" 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="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 name="p13" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS"/>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address) − fee})"/>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
-        <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="p7" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
-        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;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.prPred name="p3" org.eventb.core.predicate="validator_fee&gt;0∧estimated_cross_chain_transaction_fee&gt;0">
+            <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+            <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="gateway_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="user_address∈ADDRESS">
+            <org.eventb.core.prIdent name="ADDRESS" org.eventb.core.type="â„™(ADDRESS)"/>
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="validator_fee&gt;0">
+            <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <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="p16" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+        <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.prPred name="p6" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
-        <org.eventb.core.prReas name="r1" 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.typeRewrites:1"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0">
+            <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
     </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS,CROSS_CHAIN_TRANSACTIONS,GATEWAYS">
+    <org.eventb.core.prProof name="REGISTER/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" 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.prGoal="p0" org.eventb.core.prHyps="">
-            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
+        <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="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10,p11"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12,p13"/>
                 <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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p2,p1,p5,p9,p7,p3,p8,p4,p6">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p23"/>
+                        <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,p5,p9,p6,p7,p8,p3,p10,p11,p12,p13">
                             <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
                         </org.eventb.core.prRule>
                     </org.eventb.core.prAnte>
@@ -284,112 +256,109 @@
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
         <org.eventb.core.prIdent name="balances" 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="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
         <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="p17" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+        <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="p20" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway∈GATEWAYS"/>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address) − fee})"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway∈GATEWAYS">
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="initial_deposit∈ℕ"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0"/>
         <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
-        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS"/>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address) − fee})(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+            <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
+            <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
+            <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
         </org.eventb.core.prPred>
         <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)≥0"/>
         <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
-        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
-        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway ↦ cross_chain_transaction∈gateway_pending_transactions"/>
-        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="validator_fee&gt;0∧estimated_cross_chain_transaction_fee&gt;0"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥validator_fee+estimated_cross_chain_transaction_fee"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="balances(gateway_address) − fee≥0"/>
-        <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="p0" org.eventb.core.predicate="gateway_address∈dom(balances{gateway_address ↦ balances(gateway_address) − validator_fee})"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
+            <org.eventb.core.prIdent name="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="p6" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address) − fee}∈ADDRESS ⇸ ℤ"/>
-        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
-        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(gateway_address)≥fee"/>
-        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
         <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="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION/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.prProof name="REGISTER/inv14;/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ADDRESS">
         <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
-            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
-                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
-                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
                     </org.eventb.core.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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL4"/>
-    </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/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">
-        <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
-            <org.eventb.core.prAnte name="'">
-                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
-                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
-                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
-                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
-                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
-                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
-                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
-                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
-                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
-                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p7,p5,p3,p6">
-                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
-                </org.eventb.core.prRule>
-            </org.eventb.core.prAnte>
-        </org.eventb.core.prRule>
-        <org.eventb.core.prIdent name="amount" org.eventb.core.type="ℤ"/>
-        <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
-        <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
-        <org.eventb.core.prIdent name="initial_deposit" 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="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="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
         </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address) − validator_fee≥0"/>
         <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS">
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit∈ℕ">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
         <org.eventb.core.prPred name="p15" 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)"/>
@@ -399,23 +368,28 @@
             <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="balances{user_address ↦ balances(user_address)+amount}∈ADDRESS ⇸ ℕ"/>
         <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="validator_fee&gt;0∧estimated_cross_chain_transaction_fee&gt;0">
+            <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
         <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="user_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="user_address∈ADDRESS">
+            <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
         <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="p3" org.eventb.core.predicate="amount&gt;0"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address) − validator_fee})(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="validator_fee&gt;0"/>
         <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"/>
@@ -425,210 +399,261 @@
             <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.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
-        <org.eventb.core.prReas name="r1" 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.typeRewrites:1"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0">
+            <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
     </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/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" org.eventb.core.prSets="ADDRESS">
+    <org.eventb.core.prProof name="REGISTER/inv15;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS">
         <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+        <org.eventb.core.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="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="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p4,p7,p5,p3,p6">
-                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10,p11"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12,p13"/>
+                <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="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p23"/>
+                        <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,p5,p9,p6,p7,p8,p3,p10,p11,p12,p13">
+                            <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="amount" org.eventb.core.type="ℤ"/>
         <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
+        <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
         <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
         <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
         <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
-        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="gateway∈GATEWAYS">
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="gateway∈GATEWAYS">
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
-        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="initial_deposit∈ℕ"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="user_address∈dom(balances{gateway_address ↦ balances(gateway_address) − validator_fee})"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)≥0"/>
         <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
-        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="user_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
-        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="validator_fee&gt;0∧estimated_cross_chain_transaction_fee&gt;0"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_EVENTS" org.eventb.core.type="â„™(CROSS_CHAIN_EVENTS)"/>
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="triggered_events" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×CROSS_CHAIN_EVENTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances{user_address ↦ balances(user_address)+amount})"/>
-        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="amount&gt;0"/>
-        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances(user_address)≥validator_fee+estimated_cross_chain_transaction_fee"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="source_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="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.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances)"/>
-        <org.eventb.core.prReas name="r1" 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.typeRewrites:1"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
+        <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/inv13;/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ADDRESS">
+    <org.eventb.core.prProof name="REGISTER/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,p6,p7,p8,p9,p10,p11" org.eventb.core.prSets="ADDRESS">
         <org.eventb.core.lang name="L"/>
-        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+        <org.eventb.core.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="HIDE0" org.eventb.core.prHyps="p10"/>
-                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
-                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
-                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
-                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
-                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
-                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
-                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
-                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
-                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
-                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
-                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20">
-                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with gateway_address=user_address" org.eventb.core.prHyps="p20">
-                            <org.eventb.core.prAnte name="'">
-                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p22"/>
-                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
-                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
-                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p2,p1,p5,p9,p7,p4,p8,p3,p6,p22">
-                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12,p13"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14,p15"/>
+                <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="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p26">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with user_address=gateway_address" org.eventb.core.prHyps="p26">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10,p4"/>
+                                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1,p7,p11,p8,p9,p10,p4,p6,p3,p12,p13,p14,p15,p28">
+                                            <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.prAnte>
-                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
-                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1">
-                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
-                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p9"/>
+                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29">
+                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p1">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
+                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p10"/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                </org.eventb.core.prRule>
                             </org.eventb.core.prAnte>
                             <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
                         </org.eventb.core.prRule>
                     </org.eventb.core.prAnte>
-                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
                 </org.eventb.core.prRule>
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
-        <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="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
         <org.eventb.core.prIdent name="gateway_address" org.eventb.core.type="ADDRESS"/>
         <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
         <org.eventb.core.prIdent name="user_address" org.eventb.core.type="ADDRESS"/>
-        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="subscriptions∈GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="subscriptions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_SMART_CONTRACTS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="balances(gateway_address) − validator_fee≥0"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="initial_deposit∈ℕ"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="user_address∈dom(balances{gateway_address ↦ balances(gateway_address) − validator_fee})"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="gateway_pending_transactions∈GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_TRANSACTIONS" org.eventb.core.type="â„™(CROSS_CHAIN_TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="gateway_pending_transactions" org.eventb.core.type="ℙ(GATEWAYS×CROSS_CHAIN_TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="({gateway_address} ⩤ balances)(user_address)≥0"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="received_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="TRANSACTIONS" org.eventb.core.type="â„™(TRANSACTIONS)"/>
             <org.eventb.core.prIdent name="received_transactions" org.eventb.core.type="ℙ(CROSS_CHAIN_SMART_CONTRACTS×TRANSACTIONS)"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="balances(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬gateway_address=user_address"/>
-        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="balances(user_address)+amount≥0"/>
-        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="user_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="triggered_events∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS">
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="balances(gateway_address)≥0"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="user_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p21" 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="p20" org.eventb.core.predicate="gateway_address=user_address"/>
-        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="received_cross_chain_transactions∈CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS">
+        <org.eventb.core.prPred name="p24" 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="p7" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
-        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="user_address∈dom(balances)"/>
-        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="gateway∈GATEWAYS">
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="gateway∈GATEWAYS">
             <org.eventb.core.prIdent name="GATEWAYS" org.eventb.core.type="â„™(GATEWAYS)"/>
             <org.eventb.core.prIdent name="gateway" org.eventb.core.type="GATEWAYS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{user_address ↦ balances(user_address)+amount})(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
-        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="balances{gateway_address ↦ balances(gateway_address) − validator_fee}∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(balances{gateway_address ↦ balances(gateway_address) − validator_fee})(user_address)≥0"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="balances(gateway_address)≥validator_fee+estimated_cross_chain_transaction_fee"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="target_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
             <org.eventb.core.prIdent name="CROSS_CHAIN_SMART_CONTRACTS" org.eventb.core.type="â„™(CROSS_CHAIN_SMART_CONTRACTS)"/>
             <org.eventb.core.prIdent name="target_smart_contract" org.eventb.core.type="CROSS_CHAIN_SMART_CONTRACTS"/>
         </org.eventb.core.prPred>
-        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="({user_address} ⩤ balances)(gateway_address)≥0"/>
-        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="balances{user_address ↦ balances(user_address)+amount}∈ADDRESS ⇸ ℤ"/>
         <org.eventb.core.prPred name="p1" org.eventb.core.predicate="balances∈ADDRESS ⇸ ℕ"/>
-        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
-        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="initial_deposit&gt;0"/>
-        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="gateway_address∈dom(balances{user_address ↦ balances(user_address)+amount})"/>
-        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="amount&gt;0"/>
-        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="source_smart_contract∈CROSS_CHAIN_SMART_CONTRACTS">
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="validator_fee&gt;0∧estimated_cross_chain_transaction_fee&gt;0"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="user_address=gateway_address"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="gateway_address∈ADDRESS"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="initial_deposit&gt;0"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="balances(user_address)≥validator_fee+estimated_cross_chain_transaction_fee"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="validator_fee&gt;0"/>
+        <org.eventb.core.prPred name="p16" 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="p22" org.eventb.core.predicate="balances(user_address)≥0"/>
-        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eqL1:1"/>
-        <org.eventb.core.prReas name="r3" 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.typeRewrites:1"/>
-        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
-        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
-        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="balances(user_address)≥0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eqL1:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
     </org.eventb.core.prProof>
-    <org.eventb.core.prProof name="DEPOSIT_CRYPTOCURRENCY/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.prProof name="REGISTER/act11;/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ADDRESS">
         <org.eventb.core.lang name="L"/>
         <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
             <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
                 <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
-                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
-                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8,p9"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps=""/>
                     </org.eventb.core.prAnte>
                 </org.eventb.core.prRule>
             </org.eventb.core.prAnte>
         </org.eventb.core.prRule>
         <org.eventb.core.prIdent name="balances" org.eventb.core.type="ℙ(ADDRESS×ℤ)"/>
-        <org.eventb.core.prIdent name="user_address" 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="user_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
-        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="user_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="validator_fee&gt;0∧estimated_cross_chain_transaction_fee&gt;0">
+            <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+            <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="initial_deposit∈ℕ">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="gateway_address∈dom(balances)∧balances∈ADDRESS ⇸ ℤ"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="initial_deposit∈ℕ∧initial_deposit&gt;0">
+            <org.eventb.core.prIdent name="initial_deposit" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="gateway_address∈dom(balances)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="validator_fee&gt;0">
+            <org.eventb.core.prIdent name="validator_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
         <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="p9" org.eventb.core.predicate="estimated_cross_chain_transaction_fee&gt;0">
+            <org.eventb.core.prIdent name="estimated_cross_chain_transaction_fee" org.eventb.core.type="ℤ"/>
+        </org.eventb.core.prPred>
         <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>