<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd" version="5">
<org.eventb.core.seesContext name="sees1" org.eventb.core.target="ATM_TD_4_CO"/>
<org.eventb.core.refinesMachine name="internal_element1" org.eventb.core.target="ATM_TD_3"/>
<org.eventb.core.variable name="internal_element1" org.eventb.core.identifier="bal"/>
<org.eventb.core.variable name="internal_element2" org.eventb.core.identifier="validCard"/>
<org.eventb.core.variable name="internal_element3" org.eventb.core.identifier="cardAcct"/>
<org.eventb.core.variable name="internal_element4" org.eventb.core.identifier="cardInAtm"/>
<org.eventb.core.variable name="internal_element5" org.eventb.core.identifier="transferOk"/>
<org.eventb.core.variable name="internal_element6" org.eventb.core.identifier="transferFail"/>
<org.eventb.core.variable name="internal_element7" org.eventb.core.identifier="trAmount"/>
<org.eventb.core.variable name="internal_element8" org.eventb.core.identifier="transOkAtm"/>
<org.eventb.core.variable name="internal_element9" org.eventb.core.identifier="srcAcc"/>
<org.eventb.core.variable name="internal_element10" org.eventb.core.identifier="destAcc"/>
<org.eventb.core.variable name="internal_element11" org.eventb.core.identifier="sendReqTransfer"/>
<org.eventb.core.variable name="internal_element12" org.eventb.core.identifier="recvReqTransfer"/>
<org.eventb.core.variable name="internal_element13" org.eventb.core.identifier="sendRespTransferOk"/>
<org.eventb.core.variable name="internal_element14" org.eventb.core.identifier="recvRespTransferOk"/>
<org.eventb.core.variable name="internal_element15" org.eventb.core.identifier="sendRespTransferFail"/>
<org.eventb.core.variable name="internal_element16" org.eventb.core.identifier="recvRespTransferFail"/>
<org.eventb.core.variable name="internal_element17" org.eventb.core.identifier="trAmountM"/>
<org.eventb.core.variable name="internal_element18" org.eventb.core.identifier="transT"/>
<org.eventb.core.variable name="internal_element19" org.eventb.core.identifier="trAmountB"/>
<org.eventb.core.variable name="internal_element20" org.eventb.core.identifier="srcAccM"/>
<org.eventb.core.variable name="internal_element21" org.eventb.core.identifier="destAccM"/>
<org.eventb.core.variable name="internal_element22" org.eventb.core.identifier="srcAccB"/>
<org.eventb.core.variable name="internal_element23" org.eventb.core.identifier="destAccB"/>
<org.eventb.core.variable name="internal_element24" org.eventb.core.identifier="cardInAtmM"/>
<org.eventb.core.variable name="internal_element25" org.eventb.core.identifier="cardInAtmB"/>
<org.eventb.core.variable name="internal_element26" org.eventb.core.identifier="atmCash"/>
<org.eventb.core.variable name="internal_element27" org.eventb.core.identifier="transD"/>
<org.eventb.core.variable name="internal_element28" org.eventb.core.identifier="processedDep"/>
<org.eventb.core.variable name="internal_element29" org.eventb.core.identifier="atmDepAm"/>
<org.eventb.core.variable name="internal_element30" org.eventb.core.identifier="atmCashA"/>
<org.eventb.core.variable name="internal_element31" org.eventb.core.identifier="sendReqDep"/>
<org.eventb.core.variable name="internal_element32" org.eventb.core.identifier="recvReqDep"/>
<org.eventb.core.variable name="internal_element33" org.eventb.core.identifier="sendRespDep"/>
<org.eventb.core.variable name="internal_element34" org.eventb.core.identifier="recvRespDep"/>
<org.eventb.core.variable name="internal_element35" org.eventb.core.identifier="atmDepAmM"/>
<org.eventb.core.variable name="internal_element36" org.eventb.core.identifier="atmDepAmB"/>
<org.eventb.core.invariant name="internal_element1" org.eventb.core.label="BalTransfer_4.inv2" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.invariant name="internal_element2" org.eventb.core.label="BalTransfer_4.inv3" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.invariant name="internal_element3" org.eventb.core.label="BalTransfer_4.inv21" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_element4" org.eventb.core.label="BalTransfer_4.inv22" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_element5" org.eventb.core.label="BalTransfer_4.inv23" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_element6" org.eventb.core.label="BalTransfer_4.inv24" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_element7" org.eventb.core.label="BalTransfer_4.inv5" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.invariant name="internal_element8" org.eventb.core.label="BalTransfer_4.inv6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.invariant name="internal_element9" org.eventb.core.label="BalTransfer_4.inv12" org.eventb.core.predicate="∀a·a∈dom(trAmountM)⇒a∈dom(trAmount)∧trAmountM(a)=trAmount(a)"/>
<org.eventb.core.invariant name="internal_element10" org.eventb.core.label="BalTransfer_4.inv13" org.eventb.core.predicate="∀a·a∈recvReqTransfer∧a∈dom(trAmountB)⇒a∈dom(trAmountM)∧trAmountB(a)=trAmountM(a)"/>
<org.eventb.core.invariant name="internal_element11" org.eventb.core.label="BalTransfer_4.inv25" org.eventb.core.predicate="∀a·a∈dom(srcAccM)⇒a∈dom(srcAcc)∧srcAccM(a)=srcAcc(a)"/>
<org.eventb.core.invariant name="internal_element12" org.eventb.core.label="BalTransfer_4.inv17" org.eventb.core.predicate="∀a·a∈recvReqTransfer∧a∈dom(srcAccB)⇒a∈dom(srcAccM)∧srcAccB(a)=srcAccM(a)"/>
<org.eventb.core.invariant name="internal_element13" org.eventb.core.label="BalTransfer_4.inv26" org.eventb.core.predicate="∀a·a∈dom(destAccM)⇒a∈dom(destAcc)∧destAccM(a)=destAcc(a)"/>
<org.eventb.core.invariant name="internal_element14" org.eventb.core.label="BalTransfer_4.inv18" org.eventb.core.predicate="∀a·a∈recvReqTransfer∧a∈dom(destAccB)⇒a∈dom(destAccM)∧destAccB(a)=destAccM(a)"/>
<org.eventb.core.invariant name="internal_element15" org.eventb.core.label="BalTransfer_4.inv27" org.eventb.core.predicate="∀a·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)∧cardInAtmM(a)=cardInAtm(a)"/>
<org.eventb.core.invariant name="internal_element16" org.eventb.core.label="BalTransfer_4.inv28" org.eventb.core.predicate="∀a·a∈recvReqTransfer∧a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)∧cardInAtmB(a)=cardInAtm(a)"/>
<org.eventb.core.invariant name="internal_element17" org.eventb.core.label="Deposit_4.inv5" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.invariant name="internal_element18" org.eventb.core.label="Deposit_4.inv6" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.invariant name="internal_element19" org.eventb.core.label="Deposit_4.inv7" org.eventb.core.predicate="∀a·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.invariant name="internal_element20" org.eventb.core.label="Deposit_4.inv8" org.eventb.core.predicate="∀a·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.invariant name="internal_element21" org.eventb.core.label="Deposit_4.inv9" org.eventb.core.predicate="∀a·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.invariant name="internal_element22" org.eventb.core.label="Deposit_4.inv10" org.eventb.core.predicate="∀a·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.invariant name="internal_element23" org.eventb.core.label="Deposit_4.inv11" org.eventb.core.predicate="∀a·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.invariant name="internal_element24" org.eventb.core.label="Deposit_4.inv12" org.eventb.core.predicate="∀a·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.invariant name="internal_element25" org.eventb.core.label="Deposit_4.inv13" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION">
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="trAmountM ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act38"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="trAmountB ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act32"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="atmDepAmB ≔ ∅" org.eventb.core.label="Deposit_4.INITIALISATION.act27"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="cardInAtmB ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act31"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="atmDepAmM ≔ ∅" org.eventb.core.label="Deposit_4.INITIALISATION.act28"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="destAccB ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act43"/>
<org.eventb.core.action name="internal_element7" org.eventb.core.assignment="srcAccB ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act42"/>
<org.eventb.core.action name="internal_element8" org.eventb.core.assignment="cardInAtmM ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act36"/>
<org.eventb.core.action name="internal_element9" org.eventb.core.assignment="destAccM ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act41"/>
<org.eventb.core.action name="internal_element10" org.eventb.core.assignment="srcAccM ≔ ∅" org.eventb.core.label="BalTransfer_4.INITIALISATION.act40"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element2" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendReqTransfer">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="SendReqTransfer"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.parameter name="internal_element4" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element5" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd11" org.eventb.core.predicate="a∉transT"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd1" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd3" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd4" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd5" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_4.SendReqTransfer.grd8" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="destAcc ≔ destAcc{a ↦ dest_ac}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act4"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="srcAccM ≔ srcAccM{a ↦ src_ac}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act7"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="trAmountM ≔ trAmountM{a ↦ am}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act6"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="destAccM ≔ destAccM{a ↦ dest_ac}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act8"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="transT ≔ transT∪{a}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act11"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="cardInAtmM ≔ cardInAtmM{a ↦ c}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act10"/>
<org.eventb.core.action name="internal_element7" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer∪{a}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act1"/>
<org.eventb.core.action name="internal_element8" org.eventb.core.assignment="trAmount ≔ trAmount{a ↦ am}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act2"/>
<org.eventb.core.action name="internal_element9" org.eventb.core.assignment="srcAcc ≔ srcAcc{a ↦ src_ac}" org.eventb.core.label="BalTransfer_4.SendReqTransfer.act3"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element3" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="RecvReqTransfer">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="RecvReqTransfer"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element4" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_element5" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd2" org.eventb.core.predicate="a∈dom(trAmountM)"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd3" org.eventb.core.predicate="am=trAmountM(a)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd1" org.eventb.core.predicate="a∈sendReqTransfer"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd9" org.eventb.core.predicate="a∈dom(destAccM)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="trAmountB ≔ trAmountB{a ↦ am}" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.act6"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="srcAccB ≔ srcAccB{a ↦ src_ac}" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.act9"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmB ≔ cardInAtmB{a ↦ c}" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.act8"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer∪{a}" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.act4"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer ∖ {a}" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.act5"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="destAccB ≔ destAccB{a ↦ dest_ac}" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.act10"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd7" org.eventb.core.predicate="destAccM(a)=dest_ac"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd8" org.eventb.core.predicate="a∈dom(srcAccM)"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd5" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_4.RecvReqTransfer.grd6" org.eventb.core.predicate="srcAccM(a)=src_ac"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element4" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferOK">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="TransferOK"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element4" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element5" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.TransferOK.grd1" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_4.TransferOK.grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_4.TransferOK.grd21" org.eventb.core.predicate="a∈dom(destAccB)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_4.TransferOK.grd20" org.eventb.core.predicate="a∈dom(srcAccB)"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_4.TransferOK.grd11" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_4.TransferOK.grd12" org.eventb.core.predicate="c=cardInAtmB(a)"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_4.TransferOK.grd13" org.eventb.core.predicate="a∈dom(trAmountB)"/>
<org.eventb.core.guard name="internal_element16" org.eventb.core.label="BalTransfer_4.TransferOK.grd6" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_4.TransferOK.grd14" org.eventb.core.predicate="src_ac=srcAccB(a)"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="BalTransfer_4.TransferOK.grd24" org.eventb.core.predicate="a∈recvReqTransfer"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="BalTransfer_4.TransferOK.grd15" org.eventb.core.predicate="dest_ac=destAccB(a)"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="BalTransfer_4.TransferOK.grd16" org.eventb.core.predicate="am=trAmountB(a)"/>
<org.eventb.core.guard name="internal_element12" org.eventb.core.label="BalTransfer_4.TransferOK.grd8" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.guard name="internal_element13" org.eventb.core.label="BalTransfer_4.TransferOK.grd7" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element14" org.eventb.core.label="BalTransfer_4.TransferOK.grd9" org.eventb.core.predicate="am≤bal(src_ac)"/>
<org.eventb.core.guard name="internal_element15" org.eventb.core.label="BalTransfer_4.TransferOK.grd4" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.guard name="internal_element17" org.eventb.core.label="BalTransfer_4.TransferOK.grd5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transferOk ≔ transferOk∪{a}" org.eventb.core.label="BalTransfer_4.TransferOK.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="BalTransfer_4.TransferOK.act6"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="bal ≔ bal{dest_ac ↦ bal(dest_ac)+am,src_ac ↦ bal(src_ac) − am}" org.eventb.core.label="BalTransfer_4.TransferOK.act1"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element5" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendRespTransferOk">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="SendRespTransferOk"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.grd2" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="trAmountB ≔ {a} ⩤ trAmountB" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.act9"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transferOk ≔ transferOk ∖ {a}" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.act2"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.act11"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="sendRespTransferOk ≔ sendRespTransferOk∪{a}" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.act3"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="srcAccB ≔ {a} ⩤ srcAccB" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.act12"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="destAccB ≔ {a} ⩤ destAccB" org.eventb.core.label="BalTransfer_4.SendRespTransferOk.act13"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element6" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="RecvRespTransferOk">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="RecvRespTransferOk"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.grd1" org.eventb.core.predicate="a∈sendRespTransferOk"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvRespTransferOk ≔ recvRespTransferOk∪{a}" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespTransferOk ≔ sendRespTransferOk ∖ {a}" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.act2"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.act11"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="srcAccM ≔ {a} ⩤ srcAccM" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.act12"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="destAccM ≔ {a} ⩤ destAccM" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.act13"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="trAmountM ≔ {a} ⩤ trAmountM" org.eventb.core.label="BalTransfer_4.RecvRespTransferOk.act9"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element7" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferFails">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="TransferFails"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element4" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element5" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element13" org.eventb.core.label="BalTransfer_4.TransferFails.grd13" org.eventb.core.predicate="a∈dom(trAmountB)"/>
<org.eventb.core.guard name="internal_element16" org.eventb.core.label="BalTransfer_4.TransferFails.grd20" org.eventb.core.predicate="a∈dom(srcAccB)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="BalTransfer_4.TransferFails.act3"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transferFail ≔ transferFail∪{a}" org.eventb.core.label="BalTransfer_4.TransferFails.act2"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_4.TransferFails.grd16" org.eventb.core.predicate="am=trAmountB(a)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_4.TransferFails.grd5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element15" org.eventb.core.label="BalTransfer_4.TransferFails.grd21" org.eventb.core.predicate="a∈dom(destAccB)"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_4.TransferFails.grd15" org.eventb.core.predicate="dest_ac=destAccB(a)"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_4.TransferFails.grd1" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_4.TransferFails.grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_4.TransferFails.grd6" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="BalTransfer_4.TransferFails.grd7" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="BalTransfer_4.TransferFails.grd11" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="BalTransfer_4.TransferFails.grd12" org.eventb.core.predicate="c=cardInAtmB(a)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_4.TransferFails.grd9" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct"/>
<org.eventb.core.guard name="internal_element12" org.eventb.core.label="BalTransfer_4.TransferFails.grd14" org.eventb.core.predicate="src_ac=srcAccB(a)"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.TransferFails.grd8" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.guard name="internal_element14" org.eventb.core.label="BalTransfer_4.TransferFails.grd22" org.eventb.core.predicate="a∈recvReqTransfer"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element8" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendRespTransferFail">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="SendRespTransferFail"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.grd2" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transferFail ≔ transferFail ∖ {a}" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespTransferFail ≔ sendRespTransferFail∪{a}" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.act3"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="destAccB ≔ {a} ⩤ destAccB" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.act13"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="trAmountB ≔ {a} ⩤ trAmountB" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.act9"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="srcAccB ≔ {a} ⩤ srcAccB" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.act12"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="BalTransfer_4.SendRespTransferFail.act11"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element9" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="RecvRespTransferFail">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="RecvRespTransferFail"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.grd1" org.eventb.core.predicate="a∈sendRespTransferFail"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="destAccM ≔ {a} ⩤ destAccM" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.act13"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.act11"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="srcAccM ≔ {a} ⩤ srcAccM" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.act12"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="trAmountM ≔ {a} ⩤ trAmountM" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.act9"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="recvRespTransferFail ≔ recvRespTransferFail∪{a}" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.act1"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="sendRespTransferFail ≔ sendRespTransferFail ∖ {a}" org.eventb.core.label="BalTransfer_4.RecvRespTransferFail.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element10" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferOKAtm">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="TransferOKAtm"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.TransferOKAtm.grd11" org.eventb.core.predicate="a∈recvRespTransferOk"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transOkAtm ≔ transOkAtm{a ↦ TRUE}" org.eventb.core.label="BalTransfer_4.TransferOKAtm.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="recvRespTransferOk ≔ recvRespTransferOk ∖ {a}" org.eventb.core.label="BalTransfer_4.TransferOKAtm.act6"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="transT ≔ transT ∖ {a}" org.eventb.core.label="BalTransfer_4.TransferOKAtm.act7"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element11" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferFailsAtm">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="TransferFailsAtm"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_4.TransferFailsAtm.grd11" org.eventb.core.predicate="a∈recvRespTransferFail"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transOkAtm ≔ transOkAtm{a ↦ FALSE}" org.eventb.core.label="BalTransfer_4.TransferFailsAtm.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transT ≔ transT ∖ {a}" org.eventb.core.label="BalTransfer_4.TransferFailsAtm.act7"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="recvRespTransferFail ≔ recvRespTransferFail ∖ {a}" org.eventb.core.label="BalTransfer_4.TransferFailsAtm.act6"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element12" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="sendReqDeposit">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="sendReqDeposit"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_4.sendReqDeposit.grd6" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_4.sendReqDeposit.grd9" org.eventb.core.predicate="a∉transD"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="Deposit_4.sendReqDeposit.grd4" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transD ≔ transD∪{a}" org.eventb.core.label="Deposit_4.sendReqDeposit.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="atmDepAmM ≔ atmDepAmM{a ↦ am}" org.eventb.core.label="Deposit_4.sendReqDeposit.act5"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmM ≔ cardInAtmM{a ↦ c}" org.eventb.core.label="Deposit_4.sendReqDeposit.act6"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="atmDepAm ≔ atmDepAm{a ↦ am}" org.eventb.core.label="Deposit_4.sendReqDeposit.act3"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="sendReqDep ≔ sendReqDep∪{a}" org.eventb.core.label="Deposit_4.sendReqDeposit.act4"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_4.sendReqDeposit.grd3" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="Deposit_4.sendReqDeposit.grd2" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="Deposit_4.sendReqDeposit.grd5" org.eventb.core.predicate="cardInAtm(a)=c"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element13" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="recvReqDeposit">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="recvReqDeposit"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="c"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_4.recvReqDeposit.grd1" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_4.recvReqDeposit.grd2" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_4.recvReqDeposit.grd4" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="Deposit_4.recvReqDeposit.grd5" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="cardInAtmB ≔ cardInAtmB{a ↦ c}" org.eventb.core.label="Deposit_4.recvReqDeposit.act6"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="atmDepAmB ≔ atmDepAmB{a ↦ am}" org.eventb.core.label="Deposit_4.recvReqDeposit.act5"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="recvReqDep ≔ recvReqDep∪{a}" org.eventb.core.label="Deposit_4.recvReqDeposit.act1"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="sendReqDep ≔ sendReqDep ∖ {a}" org.eventb.core.label="Deposit_4.recvReqDeposit.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element14" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="depositB">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="depositB"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="acc"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element4" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_4.depositB.grd3" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_4.depositB.grd11" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_4.depositB.grd2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="Deposit_4.depositB.grd12" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="Deposit_4.depositB.grd5" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="Deposit_4.depositB.grd7" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="Deposit_4.depositB.grd6" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="Deposit_4.depositB.grd13" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="Deposit_4.depositB.grd8" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="Deposit_4.depositB.grd9" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="Deposit_4.depositB.grd1" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="processedDep ≔ processedDep∪{a}" org.eventb.core.label="Deposit_4.depositB.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="bal ≔ bal{acc ↦ bal(acc)+am}" org.eventb.core.label="Deposit_4.depositB.act1"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="atmCash ≔ atmCash{a ↦ atmCash(a)+am}" org.eventb.core.label="Deposit_4.depositB.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element15" org.eventb.core.comment="" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="sendRespDeposit">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="sendRespDeposit"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_4.sendRespDeposit.grd4" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_4.sendRespDeposit.grd2" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_4.sendRespDeposit.grd1" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="Deposit_4.sendRespDeposit.grd6" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespDep ≔ sendRespDep∪{a}" org.eventb.core.label="Deposit_4.sendRespDeposit.act3"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="recvReqDep ≔ recvReqDep ∖ {a}" org.eventb.core.label="Deposit_4.sendRespDeposit.act10"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="processedDep ≔ processedDep ∖ {a}" org.eventb.core.label="Deposit_4.sendRespDeposit.act2"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="atmDepAmB ≔ {a} ⩤ atmDepAmB" org.eventb.core.label="Deposit_4.sendRespDeposit.act8"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="Deposit_4.sendRespDeposit.act9"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element16" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="recvRespDeposit">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="recvRespDeposit"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_4.recvRespDeposit.grd4" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_4·recvRespDeposit·grd2" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_4.recvRespDeposit.grd1" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvRespDep ≔ recvRespDep∪{a}" org.eventb.core.label="Deposit_4.recvRespDeposit.act4"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="atmDepAmM ≔ {a} ⩤ atmDepAmM" org.eventb.core.label="Deposit_4.recvRespDeposit.act8"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="Deposit_4.recvRespDeposit.act6"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="sendRespDep ≔ sendRespDep ∖ {a}" org.eventb.core.label="Deposit_4.recvRespDeposit.act5"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element17" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="depositATM">
<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="depositATM"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_3.depositATM.grd12" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_3.depositATM.grd9" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_3.depositATM.grd10" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvRespDep ≔ recvRespDep ∖ {a}" org.eventb.core.label="Deposit_3.depositATM.act6"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transD ≔ transD ∖ {a}" org.eventb.core.label="Deposit_3.depositATM.act5"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="atmCashA ≔ atmCashA{a ↦ atmCashA(a)+am}" org.eventb.core.label="Deposit_3.depositATM.act2"/>
</org.eventb.core.event>
<org.eventb.core.invariant name="internal_element37" org.eventb.core.label="inv1" org.eventb.core.predicate="∀a·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
</org.eventb.core.machineFile>
