<?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_3_CO"/>
<org.eventb.core.refinesMachine name="internal_element1" org.eventb.core.target="ATM_TD_2"/>
<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="transT"/>
<org.eventb.core.variable name="internal_element12" org.eventb.core.identifier="sendReqTransfer"/>
<org.eventb.core.variable name="internal_element13" org.eventb.core.identifier="recvReqTransfer"/>
<org.eventb.core.variable name="internal_element14" org.eventb.core.identifier="sendRespTransferOk"/>
<org.eventb.core.variable name="internal_element15" org.eventb.core.identifier="recvRespTransferOk"/>
<org.eventb.core.variable name="internal_element16" org.eventb.core.identifier="sendRespTransferFail"/>
<org.eventb.core.variable name="internal_element17" org.eventb.core.identifier="recvRespTransferFail"/>
<org.eventb.core.variable name="internal_element18" org.eventb.core.identifier="atmCash"/>
<org.eventb.core.variable name="internal_element19" org.eventb.core.identifier="transD"/>
<org.eventb.core.variable name="internal_element20" org.eventb.core.identifier="processedDep"/>
<org.eventb.core.variable name="internal_element21" org.eventb.core.identifier="atmDepAm"/>
<org.eventb.core.variable name="internal_element22" org.eventb.core.identifier="atmCashA"/>
<org.eventb.core.variable name="internal_element23" org.eventb.core.identifier="sendReqDep"/>
<org.eventb.core.variable name="internal_element24" org.eventb.core.identifier="recvReqDep"/>
<org.eventb.core.variable name="internal_element25" org.eventb.core.identifier="sendRespDep"/>
<org.eventb.core.variable name="internal_element26" org.eventb.core.identifier="recvRespDep"/>
<org.eventb.core.invariant name="internal_element1" org.eventb.core.label="BalTransfer_3.inv1" org.eventb.core.predicate="sendReqTransfer∈ℙ(reqTransfer)"/>
<org.eventb.core.invariant name="internal_element2" org.eventb.core.label="BalTransfer_3.inv2" org.eventb.core.predicate="recvReqTransfer∈ℙ(reqTransfer)"/>
<org.eventb.core.invariant name="internal_element3" org.eventb.core.label="BalTransfer_3.inv3" org.eventb.core.predicate="sendRespTransferOk∈ℙ(respTransferOk)"/>
<org.eventb.core.invariant name="internal_element4" org.eventb.core.label="BalTransfer_3.inv4" org.eventb.core.predicate="recvRespTransferOk∈ℙ(respTransferOk)"/>
<org.eventb.core.invariant name="internal_element5" org.eventb.core.label="BalTransfer_3.inv5" org.eventb.core.predicate="sendRespTransferFail∈ℙ(respTransferFail)"/>
<org.eventb.core.invariant name="internal_element6" org.eventb.core.label="BalTransfer_3.inv6" org.eventb.core.predicate="recvRespTransferFail∈ℙ(respTransferFail)"/>
<org.eventb.core.invariant name="internal_element7" org.eventb.core.label="BalTransfer_3.inv7" org.eventb.core.predicate="partition(reqTransfer, sendReqTransfer, recvReqTransfer)"/>
<org.eventb.core.invariant name="internal_element8" org.eventb.core.label="BalTransfer_3.inv8" org.eventb.core.predicate="partition(respTransferOk, sendRespTransferOk, recvRespTransferOk)"/>
<org.eventb.core.invariant name="internal_element9" org.eventb.core.label="BalTransfer_3.inv9" org.eventb.core.predicate="partition(respTransferFail, sendRespTransferFail, recvRespTransferFail)"/>
<org.eventb.core.invariant name="internal_element10" org.eventb.core.label="Deposit_3.inv1" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.invariant name="internal_element11" org.eventb.core.label="Deposit_3.inv2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.invariant name="internal_element12" org.eventb.core.label="Deposit_3.inv3" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.invariant name="internal_element13" org.eventb.core.label="Deposit_3.inv4" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.invariant name="internal_element14" org.eventb.core.label="Deposit_3.inv5" org.eventb.core.predicate="partition(reqDep, sendReqDep, recvReqDep)"/>
<org.eventb.core.invariant name="internal_element15" org.eventb.core.label="Deposit_3.inv6" org.eventb.core.predicate="partition(respDep, sendRespDep, recvRespDep)"/>
<org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION">
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="cardInAtm ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act7"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="cardAcct ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act8"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="transOkAtm ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act21"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="srcAcc ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act22"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="destAcc ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act23"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="recvRespTransferOk ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act24"/>
<org.eventb.core.action name="internal_element7" org.eventb.core.assignment="recvRespTransferFail ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act26"/>
<org.eventb.core.action name="internal_element8" org.eventb.core.assignment="atmCashA ≔ ATM × {0}" org.eventb.core.label="Deposit_3.INITIALISATION.act21"/>
<org.eventb.core.action name="internal_element9" org.eventb.core.assignment="sendRespTransferFail ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act25"/>
<org.eventb.core.action name="internal_element10" org.eventb.core.assignment="recvRespDep ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act20"/>
<org.eventb.core.action name="internal_element11" org.eventb.core.assignment="recvReqTransfer ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act28"/>
<org.eventb.core.action name="internal_element12" org.eventb.core.assignment="transT ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act30"/>
<org.eventb.core.action name="internal_element13" org.eventb.core.assignment="sendReqTransfer ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act27"/>
<org.eventb.core.action name="internal_element14" org.eventb.core.assignment="sendRespTransferOk ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act29"/>
<org.eventb.core.action name="internal_element15" org.eventb.core.assignment="validCard ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act6"/>
<org.eventb.core.action name="internal_element16" org.eventb.core.assignment="atmCash ≔ ATM × {0}" org.eventb.core.label="Deposit_3.INITIALISATION.act4"/>
<org.eventb.core.action name="internal_element17" org.eventb.core.assignment="bal ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act3"/>
<org.eventb.core.action name="internal_element18" org.eventb.core.assignment="transferFail ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act15"/>
<org.eventb.core.action name="internal_element19" org.eventb.core.assignment="transferOk ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act14"/>
<org.eventb.core.action name="internal_element20" org.eventb.core.assignment="trAmount ≔ ∅" org.eventb.core.label="BalTransfer_3.INITIALISATION.act18"/>
<org.eventb.core.action name="internal_element21" org.eventb.core.assignment="sendReqDep ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act17"/>
<org.eventb.core.action name="internal_element22" org.eventb.core.assignment="sendRespDep ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act19"/>
<org.eventb.core.action name="internal_element23" org.eventb.core.assignment="recvReqDep ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act18"/>
<org.eventb.core.action name="internal_element24" org.eventb.core.assignment="transD ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act12"/>
<org.eventb.core.action name="internal_element25" org.eventb.core.assignment="processedDep ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act15"/>
<org.eventb.core.action name="internal_element26" org.eventb.core.assignment="atmDepAm ≔ ∅" org.eventb.core.label="Deposit_3.INITIALISATION.act14"/>
</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="ReqTransfer"/>
<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_3.SendReqTransfer.grd11" org.eventb.core.predicate="a∉transT"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd1" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd7" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd6" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd8" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd9" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd3" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="BalTransfer_3.SendReqTransfer.grd5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="trAmount ≔ trAmount{a ↦ am}" org.eventb.core.label="BalTransfer_3.SendReqTransfer.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="destAcc ≔ destAcc{a ↦ dest_ac}" org.eventb.core.label="BalTransfer_3.SendReqTransfer.act4"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="srcAcc ≔ srcAcc{a ↦ src_ac}" org.eventb.core.label="BalTransfer_3.SendReqTransfer.act3"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer∪{a}" org.eventb.core.label="BalTransfer_3.SendReqTransfer.act6"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="transT ≔ transT∪{a}" org.eventb.core.label="BalTransfer_3.SendReqTransfer.act5"/>
</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.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_3.RecvReqTransfer.grd9" org.eventb.core.predicate="a∈sendReqTransfer"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer ∖ {a}" org.eventb.core.label="BalTransfer_3.RecvReqTransfer.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer∪{a}" org.eventb.core.label="BalTransfer_3.RecvReqTransfer.act4"/>
</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_3.TransferOK.grd1" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_3.TransferOK.grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="BalTransfer_3.TransferOK.grd13" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_3.TransferOK.grd16" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_3.TransferOK.grd21" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_3.TransferOK.grd15" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_3.TransferOK.grd11" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_3.TransferOK.grd12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_3.TransferOK.grd20" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="BalTransfer_3.TransferOK.grd14" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="BalTransfer_3.TransferOK.grd24" org.eventb.core.predicate="a∈recvReqTransfer"/>
<org.eventb.core.guard name="internal_element12" org.eventb.core.label="BalTransfer_3.TransferOK.grd8" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.guard name="internal_element14" org.eventb.core.label="BalTransfer_3.TransferOK.grd6" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element13" org.eventb.core.label="BalTransfer_3.TransferOK.grd9" org.eventb.core.predicate="am≤bal(src_ac)"/>
<org.eventb.core.guard name="internal_element15" org.eventb.core.label="BalTransfer_3.TransferOK.grd7" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element16" org.eventb.core.label="BalTransfer_3.TransferOK.grd4" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.guard name="internal_element17" org.eventb.core.label="BalTransfer_3.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_3.TransferOK.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="BalTransfer_3.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_3.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="RespTransferOk"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_3.SendRespTransferOk.grd2" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transferOk ≔ transferOk ∖ {a}" org.eventb.core.label="BalTransfer_3.SendRespTransferOk.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespTransferOk ≔ sendRespTransferOk∪{a}" org.eventb.core.label="BalTransfer_3.SendRespTransferOk.act3"/>
</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.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_3.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_3.RecvRespTransferOk.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespTransferOk ≔ sendRespTransferOk ∖ {a}" org.eventb.core.label="BalTransfer_3.RecvRespTransferOk.act2"/>
</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_element1" org.eventb.core.label="BalTransfer_3.TransferFails.grd6" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="BalTransfer_3.TransferFails.grd5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="BalTransfer_3.TransferFails.grd9" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="BalTransfer_3.TransferFails.grd13" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="BalTransfer_3.TransferFails.grd16" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="BalTransfer_3.TransferFails.grd8" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="BalTransfer_3.TransferFails.grd7" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.guard name="internal_element14" org.eventb.core.label="BalTransfer_3.TransferFails.grd11" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="BalTransfer_3.TransferFails.grd12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.guard name="internal_element13" org.eventb.core.label="BalTransfer_3.TransferFails.grd20" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.guard name="internal_element12" org.eventb.core.label="BalTransfer_3.TransferFails.grd21" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="BalTransfer_3.TransferFails.grd15" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="BalTransfer_3.TransferFails.grd14" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="BalTransfer_3.TransferFails.grd22" org.eventb.core.predicate="a∈recvReqTransfer"/>
<org.eventb.core.guard name="internal_element15" org.eventb.core.label="BalTransfer_3.TransferFails.grd1" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element16" org.eventb.core.label="BalTransfer_3.TransferFails.grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="BalTransfer_3.TransferFails.act3"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transferFail ≔ transferFail∪{a}" org.eventb.core.label="BalTransfer_3.TransferFails.act2"/>
</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="RespTransferFail"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_3.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_3.SendRespTransferFail.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespTransferFail ≔ sendRespTransferFail∪{a}" org.eventb.core.label="BalTransfer_3.SendRespTransferFail.act3"/>
</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.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="BalTransfer_3.RecvRespTransferFail.grd1" org.eventb.core.predicate="a∈sendRespTransferFail"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespTransferFail ≔ sendRespTransferFail ∖ {a}" org.eventb.core.label="BalTransfer_3.RecvRespTransferFail.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="recvRespTransferFail ≔ recvRespTransferFail∪{a}" org.eventb.core.label="BalTransfer_3.RecvRespTransferFail.act1"/>
</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_3.TransferOKAtm.grd11" org.eventb.core.predicate="a∈recvRespTransferOk"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="transT ≔ transT ∖ {a}" org.eventb.core.label="BalTransfer_3.TransferOKAtm.act7"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transOkAtm ≔ transOkAtm{a ↦ TRUE}" org.eventb.core.label="BalTransfer_3.TransferOKAtm.act1"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="recvRespTransferOk ≔ recvRespTransferOk ∖ {a}" org.eventb.core.label="BalTransfer_3.TransferOKAtm.act6"/>
</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_3.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_3.TransferFailsAtm.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transT ≔ transT ∖ {a}" org.eventb.core.label="BalTransfer_3.TransferFailsAtm.act7"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="recvRespTransferFail ≔ recvRespTransferFail ∖ {a}" org.eventb.core.label="BalTransfer_3.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="reqDeposit"/>
<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_3.sendReqDeposit.grd9" org.eventb.core.predicate="a∉transD"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_3.sendReqDeposit.grd2" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="Deposit_3.sendReqDeposit.grd4" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="atmDepAm ≔ atmDepAm{a ↦ am}" org.eventb.core.label="Deposit_3.sendReqDeposit.act3"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="transD ≔ transD∪{a}" org.eventb.core.label="Deposit_3.sendReqDeposit.act2"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="sendReqDep ≔ sendReqDep∪{a}" org.eventb.core.label="Deposit_3.sendReqDeposit.act4"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_3.sendReqDeposit.grd5" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="Deposit_3.sendReqDeposit.grd6" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="Deposit_3.sendReqDeposit.grd3" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
</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.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_3.recvReqDeposit.grd1" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvReqDep ≔ recvReqDep∪{a}" org.eventb.core.label="Deposit_3.recvReqDeposit.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendReqDep ≔ sendReqDep ∖ {a}" org.eventb.core.label="Deposit_3.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_3.depositB.grd1" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="Deposit_3.depositB.grd11" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_3.depositB.grd12" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="Deposit_3.depositB.grd2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="Deposit_3.depositB.grd13" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="Deposit_3.depositB.grd7" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="Deposit_3.depositB.grd8" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="Deposit_3.depositB.grd9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="Deposit_3.depositB.grd3" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="Deposit_3.depositB.grd5" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="Deposit_3.depositB.grd6" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="processedDep ≔ processedDep∪{a}" org.eventb.core.label="Deposit_3.depositB.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="bal ≔ bal{acc ↦ bal(acc)+am}" org.eventb.core.label="Deposit_3.depositB.act1"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="atmCash ≔ atmCash{a ↦ atmCash(a)+am}" org.eventb.core.label="Deposit_3.depositB.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element15" 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="respDeposit"/>
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_3.sendRespDeposit.grd2" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="Deposit_3.sendRespDeposit.grd1" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="recvReqDep ≔ recvReqDep ∖ {a}" org.eventb.core.label="Deposit_3.sendRespDeposit.act4"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespDep ≔ sendRespDep∪{a}" org.eventb.core.label="Deposit_3.sendRespDeposit.act3"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="processedDep ≔ processedDep ∖ {a}" org.eventb.core.label="Deposit_3.sendRespDeposit.act2"/>
</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.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="Deposit_3.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_3.recvRespDeposit.act4"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendRespDep ≔ sendRespDep ∖ {a}" org.eventb.core.label="Deposit_3.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.machineFile>
