<?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="MW_TDW_CO"/>
<org.eventb.core.variable name="internal_element1" org.eventb.core.identifier="atmWDAmM"/>
<org.eventb.core.variable name="internal_element2" org.eventb.core.identifier="cardInAtmM"/>
<org.eventb.core.variable name="internal_element3" org.eventb.core.identifier="sendReqWD"/>
<org.eventb.core.variable name="internal_element4" org.eventb.core.identifier="sendRespWDOk"/>
<org.eventb.core.variable name="internal_element5" org.eventb.core.identifier="sendRespWDFail"/>
<org.eventb.core.variable name="internal_element6" org.eventb.core.identifier="trAmountM"/>
<org.eventb.core.variable name="internal_element7" org.eventb.core.identifier="srcAccM"/>
<org.eventb.core.variable name="internal_element8" org.eventb.core.identifier="destAccM"/>
<org.eventb.core.variable name="internal_element9" org.eventb.core.identifier="sendReqTransfer"/>
<org.eventb.core.variable name="internal_element10" org.eventb.core.identifier="sendRespTransferOk"/>
<org.eventb.core.variable name="internal_element11" org.eventb.core.identifier="sendRespTransferFail"/>
<org.eventb.core.variable name="internal_element12" org.eventb.core.identifier="atmDepAmM"/>
<org.eventb.core.variable name="internal_element13" org.eventb.core.identifier="sendReqDep"/>
<org.eventb.core.variable name="internal_element14" org.eventb.core.identifier="sendRespDep"/>
<org.eventb.core.invariant name="internal_element1" org.eventb.core.label="MW_W.typing_sendRespWDOk" org.eventb.core.predicate="sendRespWDOk ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element2" org.eventb.core.label="MW_W.typing_sendReqWD" org.eventb.core.predicate="sendReqWD ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element3" org.eventb.core.label="MW_W.typing_sendRespWDFail" org.eventb.core.predicate="sendRespWDFail ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element4" org.eventb.core.label="MW_W.Withdraw_4_inv4" org.eventb.core.predicate="cardInAtmM ∈ ATM ⇸ CARD"/>
<org.eventb.core.invariant name="internal_element5" org.eventb.core.label="MW_W.Withdraw_4_inv6" org.eventb.core.predicate="atmWDAmM ∈ ATM ⇸ ℕ"/>
<org.eventb.core.invariant name="internal_element6" org.eventb.core.label="mMW_T.typing_sendRespTransferFail" org.eventb.core.predicate="sendRespTransferFail ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element7" org.eventb.core.label="mMW_T.typing_sendRespTransferOk" org.eventb.core.predicate="sendRespTransferOk ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element8" org.eventb.core.label="mMW_T.typing_sendReqTransfer" org.eventb.core.predicate="sendReqTransfer ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element9" org.eventb.core.label="mMW_T.BalTransfer_4_inv3" org.eventb.core.predicate="trAmountM ∈ ATM ⇸ ℕ1"/>
<org.eventb.core.invariant name="internal_element10" org.eventb.core.label="mMW_T.BalTransfer_4_inv21" org.eventb.core.predicate="srcAccM ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_element11" org.eventb.core.label="mMW_T.BalTransfer_4_inv22" org.eventb.core.predicate="destAccM ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_element12" org.eventb.core.label="mMW_D.typing_sendRespDep" org.eventb.core.predicate="sendRespDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element13" org.eventb.core.label="mMW_D.typing_sendReqDep" org.eventb.core.predicate="sendReqDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_element14" org.eventb.core.label="mMW_D.Deposit_4_inv6" org.eventb.core.predicate="atmDepAmM ∈ ATM ⇸ ℕ"/>
<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="sendReqDep ≔ ∅" org.eventb.core.label="mMW_D.INITIALISATION.act17"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendReqWD ≔  ∅" org.eventb.core.label="MW_W.INITIALISATION.act20"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="atmWDAmM ≔ ∅" org.eventb.core.label="MW_W.INITIALISATION.act31"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="sendRespWDOk ≔  ∅" org.eventb.core.label="MW_W.INITIALISATION.act22"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="sendRespDep ≔ ∅" org.eventb.core.label="mMW_D.INITIALISATION.act19"/>
<org.eventb.core.action name="internal_element6" org.eventb.core.assignment="atmDepAmM ≔ ∅" org.eventb.core.label="mMW_D.INITIALISATION.act28"/>
<org.eventb.core.action name="internal_element7" org.eventb.core.assignment="srcAccM ≔ ∅" org.eventb.core.label="mMW_T.INITIALISATION.act40"/>
<org.eventb.core.action name="internal_element8" org.eventb.core.assignment="cardInAtmM ≔ ∅" org.eventb.core.label="MW_W.INITIALISATION.act29"/>
<org.eventb.core.action name="internal_element9" org.eventb.core.assignment="destAccM≔ ∅" org.eventb.core.label="mMW_T.INITIALISATION.act41"/>
<org.eventb.core.action name="internal_element10" org.eventb.core.assignment="sendRespWDFail ≔  ∅" org.eventb.core.label="MW_W.INITIALISATION.act24"/>
<org.eventb.core.action name="internal_element11" org.eventb.core.assignment="trAmountM ≔ ∅" org.eventb.core.label="mMW_T.INITIALISATION.act38"/>
<org.eventb.core.action name="internal_element12" org.eventb.core.assignment="sendRespTransferOk ≔  ∅" org.eventb.core.label="mMW_T.INITIALISATION.act29"/>
<org.eventb.core.action name="internal_element13" org.eventb.core.assignment="sendRespTransferFail ≔  ∅" org.eventb.core.label="mMW_T.INITIALISATION.act25"/>
<org.eventb.core.action name="internal_element14" org.eventb.core.assignment="sendReqTransfer ≔  ∅" org.eventb.core.label="mMW_T.INITIALISATION.act27"/>
</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="SendReqWithdraw">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_element4" org.eventb.core.identifier="acc"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="MW_W.SendReqWithdraw.grd2" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="MW_W.SendReqWithdraw.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="MW_W.SendReqWithdraw.grd1" org.eventb.core.predicate="acc ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="MW_W.SendReqWithdraw.grd4" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="MW_W.SendReqWithdraw.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="atmWDAmM(a) ≔ am" org.eventb.core.label="MW_W.SendReqWithdraw.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="cardInAtmM(a) ≔ c" org.eventb.core.label="MW_W.SendReqWithdraw.act7"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="sendReqWD ≔  sendReqWD ∪ {a}" org.eventb.core.label="MW_W.SendReqWithdraw.act1"/>
</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="RecvReqWD">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_element3" org.eventb.core.identifier="am"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="MW_W.RecvReqWD.grd4" org.eventb.core.predicate="a ∈ dom(atmWDAmM)"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="MW_W.RecvReqWD.grd5" org.eventb.core.predicate="am = atmWDAmM(a)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="MW_W.RecvReqWD.grd9" org.eventb.core.predicate="a ∈ sendReqWD"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="MW_W.RecvReqWD.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="MW_W.RecvReqWD.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="MW_W.RecvReqWD.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="MW_W.RecvReqWD.grd2" org.eventb.core.predicate="a ↦ c ∈ cardInAtmM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendReqWD ≔ sendReqWD ∖ {a}" org.eventb.core.label="MW_W.RecvReqWD.act5"/>
</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="SendRespWDok">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="MW_W.SendRespWDok.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespWDOk ≔ sendRespWDOk ∪ {a}" org.eventb.core.label="MW_W.SendRespWDok.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="RecvRespWDOk">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="MW_W.RecvRespWDOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="MW_W.RecvRespWDOk.grd1" org.eventb.core.predicate="a ∈ sendRespWDOk"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="MW_W.RecvRespWDOk.grd4" org.eventb.core.predicate="a ∈ dom(atmWDAmM)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="MW_W.RecvRespWDOk.grd2" org.eventb.core.predicate="a ∈ dom(cardInAtmM)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespWDOk ≔  sendRespWDOk ∖ {a}" org.eventb.core.label="MW_W.RecvRespWDOk.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="atmWDAmM ≔ {a} ⩤ atmWDAmM" org.eventb.core.label="MW_W.RecvRespWDOk.act6"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="MW_W.RecvRespWDOk.act8"/>
</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="SendRespWDfail">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="MW_W.SendRespWDfail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespWDFail ≔ sendRespWDFail ∪ {a}" org.eventb.core.label="MW_W.SendRespWDfail.act1"/>
</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="RecvRespWDFail">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="MW_W.RecvRespWDFail.grd4" org.eventb.core.predicate="a ∈ dom(atmWDAmM)"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="MW_W.RecvRespWDFail.grd1" org.eventb.core.predicate="a ∈ sendRespWDFail"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="MW_W.RecvRespWDFail.grd2" org.eventb.core.predicate="a ∈ dom(cardInAtmM)"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="MW_W.RecvRespWDFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespWDFail ≔  sendRespWDFail ∖ {a}" org.eventb.core.label="MW_W.RecvRespWDFail.act2"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="atmWDAmM ≔ {a} ⩤ atmWDAmM" org.eventb.core.label="MW_W.RecvRespWDFail.act6"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="MW_W.RecvRespWDFail.act8"/>
</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="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="mMW_T.SendReqTransfer.grd1" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_T.SendReqTransfer.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="mMW_T.SendReqTransfer.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="mMW_T.SendReqTransfer.grd8" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="mMW_T.SendReqTransfer.grd3" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="mMW_T.SendReqTransfer.grd2" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="mMW_T.SendReqTransfer.grd5" org.eventb.core.predicate="src_ac ≠ dest_ac"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer ∪ {a}" org.eventb.core.label="mMW_T.SendReqTransfer.act1"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="cardInAtmM(a) ≔ c" org.eventb.core.label="mMW_T.SendReqTransfer.act10"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="destAccM(a) ≔ dest_ac" org.eventb.core.label="mMW_T.SendReqTransfer.act8"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="srcAccM(a) ≔ src_ac" org.eventb.core.label="mMW_T.SendReqTransfer.act7"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="trAmountM(a) ≔ am" org.eventb.core.label="mMW_T.SendReqTransfer.act6"/>
</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="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_element1" org.eventb.core.label="mMW_T.RecvReqTransfer.typing_src_ac" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_T.RecvReqTransfer.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="mMW_T.RecvReqTransfer.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="mMW_T.RecvReqTransfer.typing_dest_ac" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="mMW_T.RecvReqTransfer.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="mMW_T.RecvReqTransfer.grd1" org.eventb.core.predicate="a ∈ sendReqTransfer"/>
<org.eventb.core.guard name="internal_element8" org.eventb.core.label="mMW_T.RecvReqTransfer.grd2" org.eventb.core.predicate="a ∈ dom(trAmountM)"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="mMW_T.RecvReqTransfer.grd3" org.eventb.core.predicate="am = trAmountM(a)"/>
<org.eventb.core.guard name="internal_element9" org.eventb.core.label="mMW_T.RecvReqTransfer.grd5" org.eventb.core.predicate="a ↦ c ∈ cardInAtmM"/>
<org.eventb.core.guard name="internal_element12" org.eventb.core.label="mMW_T.RecvReqTransfer.grd9" org.eventb.core.predicate="a ∈ dom(destAccM)"/>
<org.eventb.core.guard name="internal_element13" org.eventb.core.label="mMW_T.RecvReqTransfer.grd8" org.eventb.core.predicate="a ∈ dom(srcAccM)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer ∖ {a}" org.eventb.core.label="mMW_T.RecvReqTransfer.act5"/>
<org.eventb.core.guard name="internal_element10" org.eventb.core.label="mMW_T.RecvReqTransfer.grd7" org.eventb.core.predicate="destAccM(a) = dest_ac"/>
<org.eventb.core.guard name="internal_element11" org.eventb.core.label="mMW_T.RecvReqTransfer.grd6" org.eventb.core.predicate="srcAccM(a) = src_ac"/>
</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="SendRespTransferOk">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="mMW_T.SendRespTransferOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespTransferOk ≔  sendRespTransferOk ∪ {a}" org.eventb.core.label="mMW_T.SendRespTransferOk.act3"/>
</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="RecvRespTransferOk">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="mMW_T.RecvRespTransferOk.grd1" org.eventb.core.predicate="a ∈ sendRespTransferOk"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_T.RecvRespTransferOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="trAmountM ≔ {a} ⩤ trAmountM" org.eventb.core.label="mMW_T.RecvRespTransferOk.act9"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="destAccM ≔  {a} ⩤ destAccM" org.eventb.core.label="mMW_T.RecvRespTransferOk.act13"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="srcAccM ≔  {a} ⩤ srcAccM" org.eventb.core.label="mMW_T.RecvRespTransferOk.act12"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="mMW_T.RecvRespTransferOk.act11"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="sendRespTransferOk ≔  sendRespTransferOk ∖ {a}" org.eventb.core.label="mMW_T.RecvRespTransferOk.act2"/>
</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="SendRespTransferFail">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="mMW_T.SendRespTransferFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespTransferFail ≔  sendRespTransferFail ∪ {a}" org.eventb.core.label="mMW_T.SendRespTransferFail.act3"/>
</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="RecvRespTransferFail">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="mMW_T.RecvRespTransferFail.grd1" org.eventb.core.predicate="a ∈ sendRespTransferFail"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_T.RecvRespTransferFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="trAmountM ≔ {a} ⩤ trAmountM" org.eventb.core.label="mMW_T.RecvRespTransferFail.act9"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="mMW_T.RecvRespTransferFail.act11"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="srcAccM ≔  {a} ⩤ srcAccM" org.eventb.core.label="mMW_T.RecvRespTransferFail.act12"/>
<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="destAccM ≔  {a} ⩤ destAccM" org.eventb.core.label="mMW_T.RecvRespTransferFail.act13"/>
<org.eventb.core.action name="internal_element5" org.eventb.core.assignment="sendRespTransferFail ≔  sendRespTransferFail ∖ {a}" org.eventb.core.label="mMW_T.RecvRespTransferFail.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="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="mMW_D.sendReqDeposit.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_D.sendReqDeposit.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="mMW_D.sendReqDeposit.grd2" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="mMW_D.sendReqDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="atmDepAmM(a) ≔ am" org.eventb.core.label="mMW_D.sendReqDeposit.act5"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="sendReqDep ≔ sendReqDep ∪ {a}" org.eventb.core.label="mMW_D.sendReqDeposit.act4"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="cardInAtmM(a) ≔ c" org.eventb.core.label="mMW_D.sendReqDeposit.act6"/>
</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="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="mMW_D.recvReqDeposit.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_D.recvReqDeposit.grd1" org.eventb.core.predicate="a ∈ sendReqDep"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="mMW_D.recvReqDeposit.grd2" org.eventb.core.predicate="a ↦ c ∈ cardInAtmM"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="mMW_D.recvReqDeposit.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_element5" org.eventb.core.label="mMW_D.recvReqDeposit.grd4" org.eventb.core.predicate="a ∈ dom(atmDepAmM)"/>
<org.eventb.core.guard name="internal_element6" org.eventb.core.label="mMW_D.recvReqDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element7" org.eventb.core.label="mMW_D.recvReqDeposit.grd5" org.eventb.core.predicate="am = atmDepAmM(a)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendReqDep ≔ sendReqDep ∖ {a}" org.eventb.core.label="mMW_D.recvReqDeposit.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="sendRespDeposit">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="mMW_D.sendRespDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="sendRespDep ≔ sendRespDep ∪ {a}" org.eventb.core.label="mMW_D.sendRespDeposit.act3"/>
</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="recvRespDeposit">
<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_element1" org.eventb.core.label="mMW_D.recvRespDeposit.grd1" org.eventb.core.predicate="a ∈ sendRespDep"/>
<org.eventb.core.guard name="internal_element2" org.eventb.core.label="mMW_D.recvRespDeposit.grd2" org.eventb.core.predicate="a ∈ dom(cardInAtmM)"/>
<org.eventb.core.guard name="internal_element3" org.eventb.core.label="mMW_D.recvRespDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_element4" org.eventb.core.label="mMW_D.recvRespDeposit.grd4" org.eventb.core.predicate="a ∈ dom(atmDepAmM)"/>
<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="atmDepAmM ≔ {a} ⩤ atmDepAmM" org.eventb.core.label="mMW_D.recvRespDeposit.act8"/>
<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="mMW_D.recvRespDeposit.act6"/>
<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="sendRespDep ≔ sendRespDep ∖ {a}" org.eventb.core.label="mMW_D.recvRespDeposit.act5"/>
</org.eventb.core.event>
</org.eventb.core.machineFile>
