<?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="internal_sees1" org.eventb.core.target="ATM_TD_CO"/>
<org.eventb.core.variable name="internal_variables1" org.eventb.core.identifier="validCard"/>
<org.eventb.core.variable name="internal_variables2" org.eventb.core.identifier="cardInAtm"/>
<org.eventb.core.variable name="internal_variables3" org.eventb.core.identifier="trAmount"/>
<org.eventb.core.variable name="internal_variables4" org.eventb.core.identifier="transOkAtm"/>
<org.eventb.core.variable name="internal_variables5" org.eventb.core.identifier="srcAcc"/>
<org.eventb.core.variable name="internal_variables6" org.eventb.core.identifier="destAcc"/>
<org.eventb.core.variable name="internal_variables7" org.eventb.core.identifier="recvRespTransferOk"/>
<org.eventb.core.variable name="internal_variables8" org.eventb.core.identifier="recvRespTransferFail"/>
<org.eventb.core.variable name="internal_variables9" org.eventb.core.identifier="trans"/>
<org.eventb.core.variable name="internal_variables10" org.eventb.core.identifier="accBalOnAtm"/>
<org.eventb.core.variable name="internal_variables11" org.eventb.core.identifier="atmCashA"/>
<org.eventb.core.variable name="internal_variables12" org.eventb.core.identifier="atmDepAm"/>
<org.eventb.core.variable name="internal_variables13" org.eventb.core.identifier="recvRespDep"/>
<org.eventb.core.invariant name="internal_invariants1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.typing_trans" org.eventb.core.predicate="trans ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants2" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.typing_recvRespTransferOk" org.eventb.core.predicate="recvRespTransferOk ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants3" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.typing_recvRespTransferFail" org.eventb.core.predicate="recvRespTransferFail ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants4" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.typing_validCard" org.eventb.core.predicate="validCard ∈ ℙ(CARD)"/>
<org.eventb.core.invariant name="internal_invariants5" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_0_IntegralATM_0_inv4" org.eventb.core.predicate="validCard ⊆  CARD"/>
<org.eventb.core.invariant name="internal_invariants6" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_1_inv10" org.eventb.core.predicate="cardInAtm ∈  ATM ⇸ CARD"/>
<org.eventb.core.invariant name="internal_invariants7" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_2_inv8" org.eventb.core.predicate="trAmount ∈ ATM ⇸ ℕ1"/>
<org.eventb.core.invariant name="internal_invariants8" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_2_inv11" org.eventb.core.predicate="transOkAtm ∈ ATM ⇸ BOOL"/>
<org.eventb.core.invariant name="internal_invariants9" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_2_inv12" org.eventb.core.predicate="srcAcc ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants10" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_2_inv13" org.eventb.core.predicate="destAcc ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants11" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_2_inv17" org.eventb.core.predicate="∀ c · c ∈ ran(cardInAtm) ⇒ c ∈ validCard"/>
<org.eventb.core.invariant name="internal_invariants12" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.typing_recvRespDep" org.eventb.core.predicate="recvRespDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants13" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.Deposit_2_inv8" org.eventb.core.predicate="atmDepAm ∈ ATM ⇸ ℕ"/>
<org.eventb.core.invariant name="internal_invariants14" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.Deposit_2_inv10" org.eventb.core.predicate="atmCashA ∈ ATM → ℕ"/>
<org.eventb.core.invariant name="internal_invariants15" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.Deposit_2_inv11" org.eventb.core.predicate="accBalOnAtm ∈ ACCOUNT ⇸ ℕ"/>
<org.eventb.core.invariant name="internal_invariants16" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.Deposit_2_inv12" org.eventb.core.predicate="∀c· c ∈ ran(cardInAtm) ⇒ c ∈ validCard "/>
<org.eventb.core.variable name="internal_variables14" org.eventb.core.identifier="trAmountM"/>
<org.eventb.core.variable name="internal_variables15" org.eventb.core.identifier="cardInAtmM"/>
<org.eventb.core.variable name="internal_variables16" org.eventb.core.identifier="srcAccM"/>
<org.eventb.core.variable name="internal_variables17" org.eventb.core.identifier="destAccM"/>
<org.eventb.core.variable name="internal_variables18" org.eventb.core.identifier="sendReqTransfer"/>
<org.eventb.core.variable name="internal_variables19" org.eventb.core.identifier="sendRespTransferOk"/>
<org.eventb.core.variable name="internal_variables20" org.eventb.core.identifier="sendRespTransferFail"/>
<org.eventb.core.variable name="internal_variables21" org.eventb.core.identifier="atmDepAmM"/>
<org.eventb.core.variable name="internal_variables22" org.eventb.core.identifier="sendReqDep"/>
<org.eventb.core.variable name="internal_variables23" org.eventb.core.identifier="sendRespDep"/>
<org.eventb.core.invariant name="internal_invariants17" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.typing_sendRespTransferFail" org.eventb.core.predicate="sendRespTransferFail ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants18" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.typing_sendRespTransferOk" org.eventb.core.predicate="sendRespTransferOk ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants19" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.typing_sendReqTransfer" org.eventb.core.predicate="sendReqTransfer ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants20" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2" org.eventb.core.predicate="cardInAtmM ∈ ATM ⇸ CARD"/>
<org.eventb.core.invariant name="internal_invariants21" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv3" org.eventb.core.predicate="trAmountM ∈ ATM ⇸ ℕ1"/>
<org.eventb.core.invariant name="internal_invariants22" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv21" org.eventb.core.predicate="srcAccM ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants23" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv22" org.eventb.core.predicate="destAccM ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants24" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.typing_sendRespDep" org.eventb.core.predicate="sendRespDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants25" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.typing_sendReqDep" org.eventb.core.predicate="sendReqDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants26" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.Deposit_4_inv6" org.eventb.core.predicate="atmDepAmM ∈ ATM ⇸ ℕ"/>
<org.eventb.core.variable name="internal_variables24" org.eventb.core.identifier="bal"/>
<org.eventb.core.variable name="internal_variables25" org.eventb.core.identifier="cardAcct"/>
<org.eventb.core.variable name="internal_variables26" org.eventb.core.identifier="transferOk"/>
<org.eventb.core.variable name="internal_variables27" org.eventb.core.identifier="transferFail"/>
<org.eventb.core.variable name="internal_variables28" org.eventb.core.identifier="trAmountB"/>
<org.eventb.core.variable name="internal_variables29" org.eventb.core.identifier="cardInAtmB"/>
<org.eventb.core.variable name="internal_variables30" org.eventb.core.identifier="srcAccB"/>
<org.eventb.core.variable name="internal_variables31" org.eventb.core.identifier="destAccB"/>
<org.eventb.core.variable name="internal_variables32" org.eventb.core.identifier="recvReqTransfer"/>
<org.eventb.core.variable name="internal_variables33" org.eventb.core.identifier="atmCash"/>
<org.eventb.core.variable name="internal_variables34" org.eventb.core.identifier="processedDep"/>
<org.eventb.core.variable name="internal_variables35" org.eventb.core.identifier="atmDepAmB"/>
<org.eventb.core.variable name="internal_variables36" org.eventb.core.identifier="recvReqDep"/>
<org.eventb.core.invariant name="internal_invariants27" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.typing_recvReqTransfer" org.eventb.core.predicate="recvReqTransfer ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants28" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.typing_transferOk" org.eventb.core.predicate="transferOk ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants29" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.typing_transferFail" org.eventb.core.predicate="transferFail ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants30" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_0_IntegralATM_0_inv1" org.eventb.core.predicate="bal ∈ ACCOUNT ⇸ ℕ"/>
<org.eventb.core.invariant name="internal_invariants31" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_0_IntegralATM_0_inv2" org.eventb.core.predicate="cardAcct ∈ CARD ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants32" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv23" org.eventb.core.predicate="srcAccB ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants33" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv24" org.eventb.core.predicate="destAccB ∈ ATM ⇸ ACCOUNT"/>
<org.eventb.core.invariant name="internal_invariants34" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5" org.eventb.core.predicate="cardInAtmB ∈ ATM ⇸ CARD"/>
<org.eventb.core.invariant name="internal_invariants35" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv6" org.eventb.core.predicate="trAmountB ∈ ATM ⇸ ℕ1"/>
<org.eventb.core.invariant name="internal_invariants36" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.typing_recvReqDep" org.eventb.core.predicate="recvReqDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants37" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.typing_processedDep" org.eventb.core.predicate="processedDep ∈ ℙ(ATM)"/>
<org.eventb.core.invariant name="internal_invariants38" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.Deposit_1_inv2" org.eventb.core.predicate="atmCash ∈ ATM → ℕ"/>
<org.eventb.core.invariant name="internal_invariants39" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.Deposit_4_inv5" org.eventb.core.predicate="atmDepAmB ∈ 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_then1" org.eventb.core.assignment="destAcc ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act23"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trAmount ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act18"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="recvRespTransferOk ≔  ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act24"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="recvRespTransferFail ≔  ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act26"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="transOkAtm ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act21"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="trans ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act30"/>
<org.eventb.core.action name="internal_then7" org.eventb.core.assignment="srcAcc ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act22"/>
<org.eventb.core.action name="internal_then8" org.eventb.core.assignment="cardInAtm ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act7"/>
<org.eventb.core.action name="internal_then9" org.eventb.core.assignment="recvRespDep ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.INITIALISATION.act20"/>
<org.eventb.core.action name="internal_then10" org.eventb.core.assignment="accBalOnAtm ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.INITIALISATION.act11"/>
<org.eventb.core.action name="internal_then11" org.eventb.core.assignment="validCard ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.INITIALISATION.act4"/>
<org.eventb.core.action name="internal_then12" org.eventb.core.assignment="atmCashA ≔ ATM × {0}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.INITIALISATION.act21"/>
<org.eventb.core.action name="internal_then13" org.eventb.core.assignment="atmDepAm ≔ ∅" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.INITIALISATION.act14"/>
<org.eventb.core.action name="internal_then14" org.eventb.core.assignment="sendReqDep ≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.INITIALISATION.act17"/>
<org.eventb.core.action name="internal_then15" org.eventb.core.assignment="sendRespTransferOk ≔  ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act29"/>
<org.eventb.core.action name="internal_then16" org.eventb.core.assignment="trAmountM ≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act38"/>
<org.eventb.core.action name="internal_then17" org.eventb.core.assignment="cardInAtmM ≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act36"/>
<org.eventb.core.action name="internal_then18" org.eventb.core.assignment="sendRespTransferFail ≔  ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act25"/>
<org.eventb.core.action name="internal_then19" org.eventb.core.assignment="sendRespDep ≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.INITIALISATION.act19"/>
<org.eventb.core.action name="internal_then20" org.eventb.core.assignment="atmDepAmM ≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.INITIALISATION.act28"/>
<org.eventb.core.action name="internal_then21" org.eventb.core.assignment="sendReqTransfer ≔  ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act27"/>
<org.eventb.core.action name="internal_then22" org.eventb.core.assignment="srcAccM ≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act40"/>
<org.eventb.core.action name="internal_then23" org.eventb.core.assignment="destAccM≔ ∅" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.INITIALISATION.act41"/>
<org.eventb.core.action name="internal_then24" org.eventb.core.assignment="atmDepAmB ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.INITIALISATION.act27"/>
<org.eventb.core.action name="internal_then25" org.eventb.core.assignment="processedDep ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.INITIALISATION.act15"/>
<org.eventb.core.action name="internal_then26" org.eventb.core.assignment="trAmountB ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act32"/>
<org.eventb.core.action name="internal_then27" org.eventb.core.assignment="srcAccB≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act42"/>
<org.eventb.core.action name="internal_then28" org.eventb.core.assignment="destAccB  ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act43"/>
<org.eventb.core.action name="internal_then29" org.eventb.core.assignment="cardInAtmB ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act31"/>
<org.eventb.core.action name="internal_then30" org.eventb.core.assignment="transferFail ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act15"/>
<org.eventb.core.action name="internal_then31" org.eventb.core.assignment="atmCash ≔ ATM × {0}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.INITIALISATION.act4"/>
<org.eventb.core.action name="internal_then32" org.eventb.core.assignment="transferOk ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act14"/>
<org.eventb.core.action name="internal_then33" org.eventb.core.assignment="recvReqTransfer ≔  ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act28"/>
<org.eventb.core.action name="internal_then34" org.eventb.core.assignment="bal ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act1"/>
<org.eventb.core.action name="internal_then35" org.eventb.core.assignment="cardAcct ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.INITIALISATION.act2"/>
<org.eventb.core.action name="internal_then36" org.eventb.core.assignment="recvReqDep ≔ ∅" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.INITIALISATION.act18"/>
</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_any1" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.parameter name="internal_any4" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any5" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd8" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd2" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd3" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd11" org.eventb.core.predicate="a ∉ trans"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd1" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd7" org.eventb.core.predicate="a ↦ c ∈ cardInAtm"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd4" org.eventb.core.predicate="c ∈ validCard"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.grd5" org.eventb.core.predicate="src_ac ≠ dest_ac"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="destAcc(a) ≔ dest_ac" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.act4"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="srcAcc(a) ≔ src_ac" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.act3"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="trAmount(a) ≔ am" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.act2"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="trans ≔ trans ∪ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.SendReqTransfer.act11"/>
<org.eventb.core.guard name="internal_where11" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.grd1" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where12" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where13" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where14" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.grd8" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where15" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.grd3" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where16" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.grd2" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where17" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.grd5" org.eventb.core.predicate="src_ac ≠ dest_ac"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer ∪ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.act1"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="cardInAtmM(a) ≔ c" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.act10"/>
<org.eventb.core.action name="internal_then7" org.eventb.core.assignment="destAccM(a) ≔ dest_ac" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.act8"/>
<org.eventb.core.action name="internal_then8" org.eventb.core.assignment="srcAccM(a) ≔ src_ac" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendReqTransfer.act7"/>
<org.eventb.core.action name="internal_then9" org.eventb.core.assignment="trAmountM(a) ≔ am" org.eventb.core.label="[ATMproduct_TD]MW_TD\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="RecvRespTransferOk">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.RecvRespTransferOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="recvRespTransferOk ≔  recvRespTransferOk ∪ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.RecvRespTransferOk.act1"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.grd1" org.eventb.core.predicate="a ∈ sendRespTransferOk"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trAmountM ≔ {a} ⩤ trAmountM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.act9"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="destAccM ≔  {a} ⩤ destAccM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.act13"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="srcAccM ≔  {a} ⩤ srcAccM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.act12"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.act11"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="sendRespTransferOk ≔  sendRespTransferOk ∖ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferOk.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element:" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="RecvRespTransferFail">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.RecvRespTransferFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="recvRespTransferFail ≔  recvRespTransferFail ∪ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.RecvRespTransferFail.act1"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.grd1" org.eventb.core.predicate="a ∈ sendRespTransferFail"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trAmountM ≔ {a} ⩤ trAmountM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.act9"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.act11"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="srcAccM ≔  {a} ⩤ srcAccM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.act12"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="destAccM ≔  {a} ⩤ destAccM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.act13"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="sendRespTransferFail ≔  sendRespTransferFail ∖ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvRespTransferFail.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementA" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferOKAtm">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferOKAtm.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferOKAtm.grd11" org.eventb.core.predicate="a ∈ recvRespTransferOk"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="recvRespTransferOk ≔ recvRespTransferOk ∖ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferOKAtm.act6"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trans ≔ trans ∖ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferOKAtm.act7"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="transOkAtm(a) ≔  TRUE" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferOKAtm.act1"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementB" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferFailsAtm">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferFailsAtm.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferFailsAtm.grd11" org.eventb.core.predicate="a ∈ recvRespTransferFail"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="transOkAtm(a) ≔  FALSE" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferFailsAtm.act1"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trans ≔ trans ∖ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferFailsAtm.act7"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="recvRespTransferFail ≔ recvRespTransferFail ∖ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_T.TransferFailsAtm.act6"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element&gt;" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="sendReqDeposit">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.grd2" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.grd6" org.eventb.core.predicate="c ∈ validCard"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.grd4" org.eventb.core.predicate="a ∈ dom(cardInAtm)"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.grd5" org.eventb.core.predicate="cardInAtm(a) = c"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.grd3" org.eventb.core.predicate="c ∈ ran(cardInAtm)"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.grd9" org.eventb.core.predicate="a ∉ trans"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="atmDepAm(a) ≔ am" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.act3"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trans ≔ trans ∪ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.sendReqDeposit.act2"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where11" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where12" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.grd2" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where13" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="atmDepAmM(a) ≔ am" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.act5"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="sendReqDep ≔ sendReqDep ∪ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.act4"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="cardInAtmM(a) ≔ c" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendReqDeposit.act6"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element?" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="recvRespDeposit">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.recvRespDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="recvRespDep ≔ recvRespDep ∪ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.recvRespDeposit.act4"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.grd1" org.eventb.core.predicate="a ∈ sendRespDep"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.grd2" org.eventb.core.predicate="a ∈ dom(cardInAtmM)"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.grd4" org.eventb.core.predicate="a ∈ dom(atmDepAmM)"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="atmDepAmM ≔ {a} ⩤ atmDepAmM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.act8"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="cardInAtmM ≔ {a} ⩤ cardInAtmM" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.act6"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="sendRespDep ≔ sendRespDep ∖ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvRespDeposit.act5"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_element@" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="depositATM">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.grd12" org.eventb.core.predicate="a ∈ recvRespDep"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.grd9" org.eventb.core.predicate="a ∈ dom (atmDepAm)"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.grd10" org.eventb.core.predicate="atmDepAm(a) = am"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="atmCashA(a) ≔ atmCashA(a) + am" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.act2"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="recvRespDep ≔ recvRespDep ∖ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.act6"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="trans ≔ trans ∖ {a}" org.eventb.core.label="[ATMproduct_TD]ATM_TD\mATM_D.depositATM.act5"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementC" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="RecvReqTransfer">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_any4" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_any5" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.typing_src_ac" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.typing_dest_ac" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd1" org.eventb.core.predicate="a ∈ sendReqTransfer"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd2" org.eventb.core.predicate="a ∈ dom(trAmountM)"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd3" org.eventb.core.predicate="am = trAmountM(a)"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd5" org.eventb.core.predicate="a ↦ c ∈ cardInAtmM"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd9" org.eventb.core.predicate="a ∈ dom(destAccM)"/>
<org.eventb.core.guard name="internal_where11" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd8" org.eventb.core.predicate="a ∈ dom(srcAccM)"/>
<org.eventb.core.guard name="internal_where12" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd7" org.eventb.core.predicate="destAccM(a) = dest_ac"/>
<org.eventb.core.guard name="internal_where13" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd6" org.eventb.core.predicate="srcAccM(a) = src_ac"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="sendReqTransfer ≔ sendReqTransfer ∖ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.act5"/>
<org.eventb.core.guard name="internal_where14" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where15" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.typing_src_ac" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where16" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where17" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.typing_dest_ac" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where18" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.typing_am" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="destAccB(a) ≔ dest_ac" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.act10"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∪ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.act4"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="trAmountB(a) ≔ am" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.act6"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="srcAccB(a) ≔ src_ac" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.act9"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="cardInAtmB(a) ≔ c" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.RecvReqTransfer.act8"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementD" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendRespTransferOk">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendRespTransferOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="sendRespTransferOk ≔  sendRespTransferOk ∪ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendRespTransferOk.act3"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.grd2" org.eventb.core.predicate="a ∈ transferOk"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trAmountB ≔ {a} ⩤ trAmountB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.act9"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="transferOk ≔  transferOk ∖ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.act2"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.act11"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="srcAccB ≔  {a} ⩤ srcAccB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.act12"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="destAccB ≔  {a} ⩤ destAccB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferOk.act13"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementE" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendRespTransferFail">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendRespTransferFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="sendRespTransferFail ≔  sendRespTransferFail ∪ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_T.SendRespTransferFail.act3"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.grd2" org.eventb.core.predicate="a ∈ transferFail"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="trAmountB ≔ {a} ⩤ trAmountB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.act9"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="destAccB ≔  {a} ⩤ destAccB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.act13"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="srcAccB ≔  {a} ⩤ srcAccB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.act12"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.act11"/>
<org.eventb.core.action name="internal_then6" org.eventb.core.assignment="transferFail ≔  transferFail ∖ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.SendRespTransferFail.act2"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementF" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferOK">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any4" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_any5" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd2" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd5" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd4" org.eventb.core.predicate="c ↦ src_ac ∈ cardAcct"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd7" org.eventb.core.predicate="dest_ac ∈ dom(bal)"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd6" org.eventb.core.predicate="src_ac ∈ dom(bal)"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd9" org.eventb.core.predicate="am &lt; bal(src_ac)"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd8" org.eventb.core.predicate="src_ac ≠ dest_ac"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd13" org.eventb.core.predicate="a ∈ dom(trAmountB)"/>
<org.eventb.core.guard name="internal_where11" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd20" org.eventb.core.predicate="a ∈ dom(srcAccB)"/>
<org.eventb.core.guard name="internal_where12" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd14" org.eventb.core.predicate="src_ac = srcAccB(a)"/>
<org.eventb.core.guard name="internal_where13" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd24" org.eventb.core.predicate="a ∈ recvReqTransfer"/>
<org.eventb.core.guard name="internal_where14" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd21" org.eventb.core.predicate="a ∈ dom(destAccB)"/>
<org.eventb.core.guard name="internal_where15" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd15" org.eventb.core.predicate="dest_ac = destAccB(a)"/>
<org.eventb.core.guard name="internal_where16" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd16" org.eventb.core.predicate="am = trAmountB(a)"/>
<org.eventb.core.guard name="internal_where17" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd11" org.eventb.core.predicate="a ∈ dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_where18" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd1" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where19" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd12" org.eventb.core.predicate="c = cardInAtmB(a)"/>
<org.eventb.core.guard name="internal_where20" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.act1"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="transferOk ≔ transferOk ∪ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.act5"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.act6"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementG" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferFails">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="src_ac"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="dest_ac"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any4" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_any5" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd7" org.eventb.core.predicate="dest_ac ∈ dom(bal)"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd8" org.eventb.core.predicate="src_ac ≠ dest_ac"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd5" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd6" org.eventb.core.predicate="src_ac ∈ dom(bal)"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd9" org.eventb.core.predicate="am &gt; bal(src_ac) ∨  c ↦ src_ac ∉ cardAcct"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd11" org.eventb.core.predicate="a ∈ dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd21" org.eventb.core.predicate="a ∈ dom(destAccB)"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd12" org.eventb.core.predicate="c = cardInAtmB(a)"/>
<org.eventb.core.guard name="internal_where11" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd13" org.eventb.core.predicate="a ∈ dom(trAmountB)"/>
<org.eventb.core.guard name="internal_where12" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd22" org.eventb.core.predicate="a ∈ recvReqTransfer"/>
<org.eventb.core.guard name="internal_where13" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd20" org.eventb.core.predicate="a ∈ dom(srcAccB)"/>
<org.eventb.core.guard name="internal_where14" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd2" org.eventb.core.predicate="dest_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where15" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd1" org.eventb.core.predicate="src_ac ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where16" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where17" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd14" org.eventb.core.predicate="src_ac = srcAccB(a)"/>
<org.eventb.core.guard name="internal_where18" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd15" org.eventb.core.predicate="dest_ac = destAccB(a)"/>
<org.eventb.core.guard name="internal_where19" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd16" org.eventb.core.predicate="am = trAmountB(a)"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="transferFail ≔  transferFail ∪ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.act2"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.act3"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementH" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="recvReqDeposit">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="c"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.grd1" org.eventb.core.predicate="a ∈ sendReqDep"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.grd2" org.eventb.core.predicate="a ↦ c ∈ cardInAtmM"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.grd4" org.eventb.core.predicate="a ∈ dom(atmDepAmM)"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.grd5" org.eventb.core.predicate="am = atmDepAmM(a)"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="sendReqDep ≔ sendReqDep ∖ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.act2"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.recvReqDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.recvReqDeposit.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.recvReqDeposit.typing_am" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="atmDepAmB(a) ≔ am" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.recvReqDeposit.act5"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="cardInAtmB(a) ≔ c" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.recvReqDeposit.act6"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="recvReqDep ≔ recvReqDep ∪ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.recvReqDeposit.act1"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementI" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="sendRespDeposit">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendRespDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="sendRespDep ≔ sendRespDep ∪ {a}" org.eventb.core.label="[ATMproduct_TD]MW_TD\mMW_D.sendRespDeposit.act3"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.typing_a" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.grd6" org.eventb.core.predicate="a ∈ recvReqDep"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.grd1" org.eventb.core.predicate="a ∈ processedDep"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.grd2" org.eventb.core.predicate="a ∈ dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.grd4" org.eventb.core.predicate="a ∈ dom(atmDepAmB)"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="atmDepAmB ≔ {a} ⩤ atmDepAmB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.act8"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.act9"/>
<org.eventb.core.action name="internal_then4" org.eventb.core.assignment="processedDep ≔ processedDep ∖ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.act2"/>
<org.eventb.core.action name="internal_then5" org.eventb.core.assignment="recvReqDep ≔ recvReqDep ∖ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.sendRespDeposit.act10"/>
</org.eventb.core.event>
<org.eventb.core.event name="internal_elementJ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="depositB">
<org.eventb.core.parameter name="internal_any1" org.eventb.core.identifier="acc"/>
<org.eventb.core.parameter name="internal_any2" org.eventb.core.identifier="am"/>
<org.eventb.core.parameter name="internal_any3" org.eventb.core.identifier="c"/>
<org.eventb.core.parameter name="internal_any4" org.eventb.core.identifier="a"/>
<org.eventb.core.guard name="internal_where1" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd13" org.eventb.core.predicate="a ∈ recvReqDep"/>
<org.eventb.core.guard name="internal_where2" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd1" org.eventb.core.predicate="acc ∈ ACCOUNT"/>
<org.eventb.core.guard name="internal_where3" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd11" org.eventb.core.predicate="a ∈ dom(atmDepAmB)"/>
<org.eventb.core.guard name="internal_where4" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd12" org.eventb.core.predicate="atmDepAmB(a) = am"/>
<org.eventb.core.guard name="internal_where5" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd2" org.eventb.core.predicate="acc ∈ dom(bal)"/>
<org.eventb.core.guard name="internal_where6" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd3" org.eventb.core.predicate="am ∈ ℕ1"/>
<org.eventb.core.guard name="internal_where7" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.typing_c" org.eventb.core.predicate="c ∈ CARD"/>
<org.eventb.core.guard name="internal_where8" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd5" org.eventb.core.predicate="c ↦ acc ∈ cardAcct"/>
<org.eventb.core.guard name="internal_where9" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd6" org.eventb.core.predicate="a ∈ ATM"/>
<org.eventb.core.guard name="internal_where10" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd7" org.eventb.core.predicate="a ∈ dom(atmCash)"/>
<org.eventb.core.guard name="internal_where11" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd8" org.eventb.core.predicate="a ∈ dom(cardInAtmB)"/>
<org.eventb.core.guard name="internal_where12" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd9" org.eventb.core.predicate="cardInAtmB(a) = c"/>
<org.eventb.core.guard name="internal_where13" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.typing_am" org.eventb.core.predicate="am ∈ ℤ"/>
<org.eventb.core.action name="internal_then1" org.eventb.core.assignment="atmCash(a) ≔ atmCash(a) + am" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.act2"/>
<org.eventb.core.action name="internal_then2" org.eventb.core.assignment="bal(acc) ≔ bal(acc) + am" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.act1"/>
<org.eventb.core.action name="internal_then3" org.eventb.core.assignment="processedDep ≔ processedDep ∪ {a}" org.eventb.core.label="[ATMproduct_TD]Bank_TD\mBank_D.depositB.act5"/>
</org.eventb.core.event>
</org.eventb.core.machineFile>
