<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ac.soton.emfb.compositionFile>
<ac.soton.emfb.composedMachine ac.soton.emfb.compose="true" ac.soton.emfb.name="mBank_T" ac.soton.emfb.newName="mBank_T" name="internal_element1">
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="bal" ac.soton.emfb.newName="bal" name="internal_element1"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="cardAcct" ac.soton.emfb.newName="cardAcct" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="transferOk" ac.soton.emfb.newName="transferOk" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="transferFail" ac.soton.emfb.newName="transferFail" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="trAmountB" ac.soton.emfb.newName="trAmountB" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="cardInAtmB" ac.soton.emfb.newName="cardInAtmB" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="srcAccB" ac.soton.emfb.newName="srcAccB" name="internal_element7"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="destAccB" ac.soton.emfb.newName="destAccB" name="internal_element8"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvReqTransfer" ac.soton.emfb.newName="recvReqTransfer" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="srcAccB ∈ ℙ(ATM × ACCOUNT)" ac.soton.emfb.name="typing_srcAccB" ac.soton.emfb.updatedExpression="srcAccB ∈ ℙ(ATM × ACCOUNT)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqTransfer ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvReqTransfer" ac.soton.emfb.updatedExpression="recvReqTransfer ∈ ℙ(ATM)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ∈ ℙ(ACCOUNT × ℤ)" ac.soton.emfb.name="typing_bal" ac.soton.emfb.updatedExpression="bal ∈ ℙ(ACCOUNT × ℤ)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferOk ∈ ℙ(ATM)" ac.soton.emfb.name="typing_transferOk" ac.soton.emfb.updatedExpression="transferOk ∈ ℙ(ATM)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ∈ ℙ(ATM × CARD)" ac.soton.emfb.name="typing_cardInAtmB" ac.soton.emfb.updatedExpression="cardInAtmB ∈ ℙ(ATM × CARD)" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ∈ ℙ(ATM)" ac.soton.emfb.name="typing_transferFail" ac.soton.emfb.updatedExpression="transferFail ∈ ℙ(ATM)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="destAccB ∈ ℙ(ATM × ACCOUNT)" ac.soton.emfb.name="typing_destAccB" ac.soton.emfb.updatedExpression="destAccB ∈ ℙ(ATM × ACCOUNT)" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="trAmountB ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_trAmountB" ac.soton.emfb.updatedExpression="trAmountB ∈ ℙ(ATM × ℤ)" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ∈ ℙ(CARD × ACCOUNT)" ac.soton.emfb.name="typing_cardAcct" ac.soton.emfb.updatedExpression="cardAcct ∈ ℙ(CARD × ACCOUNT)" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="BalTransfer_0_IntegralATM_0_inv1" ac.soton.emfb.updatedExpression="bal ∈ ACCOUNT ⇸ ℕ" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardAcct ∈ CARD ⇸ ACCOUNT" ac.soton.emfb.name="BalTransfer_0_IntegralATM_0_inv2" ac.soton.emfb.updatedExpression="cardAcct ∈ CARD ⇸ ACCOUNT" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccB ∈ ATM ⇸ ACCOUNT" ac.soton.emfb.name="BalTransfer_4_inv23" ac.soton.emfb.updatedExpression="srcAccB ∈ ATM ⇸ ACCOUNT" name="internal_element12"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccB ∈ ATM ⇸ ACCOUNT" ac.soton.emfb.name="BalTransfer_4_inv24" ac.soton.emfb.updatedExpression="destAccB ∈ ATM ⇸ ACCOUNT" name="internal_element13"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ∈ ATM ⇸ CARD" ac.soton.emfb.name="BalTransfer_4_inv5" ac.soton.emfb.updatedExpression="cardInAtmB ∈ ATM ⇸ CARD" name="internal_element14"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmountB ∈ ATM ⇸ ℕ1" ac.soton.emfb.name="BalTransfer_4_inv6" ac.soton.emfb.updatedExpression="trAmountB ∈ ATM ⇸ ℕ1" name="internal_element15"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="INITIALISATION" ac.soton.emfb.newName="INITIALISATION" name="internal_element1">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmountB ≔ ∅" ac.soton.emfb.name="act32" ac.soton.emfb.updatedExpression="trAmountB ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferOk ≔ ∅" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="transferOk ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ ∅" ac.soton.emfb.name="act31" ac.soton.emfb.updatedExpression="cardInAtmB ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal ≔ ∅" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ≔ ∅" ac.soton.emfb.name="act15" ac.soton.emfb.updatedExpression="transferFail ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqTransfer ≔  ∅" ac.soton.emfb.name="act28" ac.soton.emfb.updatedExpression="recvReqTransfer ≔  ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccB≔ ∅" ac.soton.emfb.name="act42" ac.soton.emfb.updatedExpression="srcAccB≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardAcct ≔ ∅" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="cardAcct ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccB  ≔ ∅" ac.soton.emfb.name="act43" ac.soton.emfb.updatedExpression="destAccB  ≔ ∅" name="internal_element9"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="RecvReqTransfer" ac.soton.emfb.newName="RecvReqTransfer" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccB(a) ≔ dest_ac" ac.soton.emfb.name="act10" ac.soton.emfb.updatedExpression="destAccB(a) ≔ dest_ac" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB(a) ≔ c" ac.soton.emfb.name="act8" ac.soton.emfb.updatedExpression="cardInAtmB(a) ≔ c" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccB(a) ≔ src_ac" ac.soton.emfb.name="act9" ac.soton.emfb.updatedExpression="srcAccB(a) ≔ src_ac" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmountB(a) ≔ am" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="trAmountB(a) ≔ am" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqTransfer ≔ recvReqTransfer ∪ {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="recvReqTransfer ≔ recvReqTransfer ∪ {a}" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ ACCOUNT" ac.soton.emfb.name="typing_dest_ac" ac.soton.emfb.updatedExpression="dest_ac ∈ ACCOUNT" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ ACCOUNT" ac.soton.emfb.name="typing_src_ac" ac.soton.emfb.updatedExpression="src_ac ∈ ACCOUNT" name="internal_element5"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="src_ac" ac.soton.emfb.newName="src_ac" name="internal_element4"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="dest_ac" ac.soton.emfb.newName="dest_ac" name="internal_element5"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="TransferOK" ac.soton.emfb.newName="TransferOK" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqTransfer ≔ recvReqTransfer ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="recvReqTransfer ≔ recvReqTransfer ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferOk ≔ transferOk ∪ {a}" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="transferOk ≔ transferOk ∪ {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am &lt; bal(src_ac)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="am &lt; bal(src_ac)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ dom(bal)" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="dest_ac ∈ dom(bal)" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ≠ dest_ac" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="src_ac ≠ dest_ac" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(trAmountB)" ac.soton.emfb.name="grd13" ac.soton.emfb.updatedExpression="a ∈ dom(trAmountB)" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ dom(bal)" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="src_ac ∈ dom(bal)" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c = cardInAtmB(a)" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="c = cardInAtmB(a)" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqTransfer" ac.soton.emfb.name="grd24" ac.soton.emfb.updatedExpression="a ∈ recvReqTransfer" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac = destAccB(a)" ac.soton.emfb.name="grd15" ac.soton.emfb.updatedExpression="dest_ac = destAccB(a)" name="internal_element12"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac = srcAccB(a)" ac.soton.emfb.name="grd14" ac.soton.emfb.updatedExpression="src_ac = srcAccB(a)" name="internal_element13"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ src_ac ∈ cardAcct" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="c ↦ src_ac ∈ cardAcct" name="internal_element14"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="src_ac ∈ ACCOUNT" name="internal_element15"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am = trAmountB(a)" ac.soton.emfb.name="grd16" ac.soton.emfb.updatedExpression="am = trAmountB(a)" name="internal_element16"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(destAccB)" ac.soton.emfb.name="grd21" ac.soton.emfb.updatedExpression="a ∈ dom(destAccB)" name="internal_element17"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ ACCOUNT" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="dest_ac ∈ ACCOUNT" name="internal_element18"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(srcAccB)" ac.soton.emfb.name="grd20" ac.soton.emfb.updatedExpression="a ∈ dom(srcAccB)" name="internal_element19"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element20"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="src_ac" ac.soton.emfb.newName="src_ac" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="dest_ac" ac.soton.emfb.newName="dest_ac" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element4"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element5"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="SendRespTransferOk" ac.soton.emfb.newName="SendRespTransferOk" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccB ≔  {a} ⩤ destAccB" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="destAccB ≔  {a} ⩤ destAccB" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccB ≔  {a} ⩤ srcAccB" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="srcAccB ≔  {a} ⩤ srcAccB" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ {a} ⩤ cardInAtmB" ac.soton.emfb.name="act11" ac.soton.emfb.updatedExpression="cardInAtmB ≔ {a} ⩤ cardInAtmB" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmountB ≔ {a} ⩤ trAmountB" ac.soton.emfb.name="act9" ac.soton.emfb.updatedExpression="trAmountB ≔ {a} ⩤ trAmountB" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferOk ≔  transferOk ∖ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="transferOk ≔  transferOk ∖ {a}" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ transferOk" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="a ∈ transferOk" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="TransferFails" ac.soton.emfb.newName="TransferFails" name="internal_element5">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ≔  transferFail ∪ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="transferFail ≔  transferFail ∪ {a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqTransfer ≔ recvReqTransfer ∖ {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="recvReqTransfer ≔ recvReqTransfer ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am &gt; bal(src_ac) ∨  c ↦ src_ac ∉ cardAcct" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="am &gt; bal(src_ac) ∨  c ↦ src_ac ∉ cardAcct" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ dom(bal)" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="dest_ac ∈ dom(bal)" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ≠ dest_ac" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="src_ac ≠ dest_ac" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(trAmountB)" ac.soton.emfb.name="grd13" ac.soton.emfb.updatedExpression="a ∈ dom(trAmountB)" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ dom(bal)" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="src_ac ∈ dom(bal)" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c = cardInAtmB(a)" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="c = cardInAtmB(a)" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac = destAccB(a)" ac.soton.emfb.name="grd15" ac.soton.emfb.updatedExpression="dest_ac = destAccB(a)" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac = srcAccB(a)" ac.soton.emfb.name="grd14" ac.soton.emfb.updatedExpression="src_ac = srcAccB(a)" name="internal_element12"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqTransfer" ac.soton.emfb.name="grd22" ac.soton.emfb.updatedExpression="a ∈ recvReqTransfer" name="internal_element13"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="src_ac ∈ ACCOUNT" name="internal_element14"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am = trAmountB(a)" ac.soton.emfb.name="grd16" ac.soton.emfb.updatedExpression="am = trAmountB(a)" name="internal_element15"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(destAccB)" ac.soton.emfb.name="grd21" ac.soton.emfb.updatedExpression="a ∈ dom(destAccB)" name="internal_element16"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ ACCOUNT" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="dest_ac ∈ ACCOUNT" name="internal_element17"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(srcAccB)" ac.soton.emfb.name="grd20" ac.soton.emfb.updatedExpression="a ∈ dom(srcAccB)" name="internal_element18"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element19"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="src_ac" ac.soton.emfb.newName="src_ac" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="dest_ac" ac.soton.emfb.newName="dest_ac" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element4"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element5"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="SendRespTransferFail" ac.soton.emfb.newName="SendRespTransferFail" name="internal_element6">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccB ≔  {a} ⩤ destAccB" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="destAccB ≔  {a} ⩤ destAccB" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccB ≔  {a} ⩤ srcAccB" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="srcAccB ≔  {a} ⩤ srcAccB" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ {a} ⩤ cardInAtmB" ac.soton.emfb.name="act11" ac.soton.emfb.updatedExpression="cardInAtmB ≔ {a} ⩤ cardInAtmB" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmountB ≔ {a} ⩤ trAmountB" ac.soton.emfb.name="act9" ac.soton.emfb.updatedExpression="trAmountB ≔ {a} ⩤ trAmountB" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ≔  transferFail ∖ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="transferFail ≔  transferFail ∖ {a}" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ transferFail" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="a ∈ transferFail" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="false" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="Deposit" ac.soton.emfb.newName="Deposit" name="internal_element7">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal(acc) ≔ bal(acc) + am" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal(acc) ≔ bal(acc) + am" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ acc ∈ cardAcct" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="c ↦ acc ∈ cardAcct" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="acc ∈ ACCOUNT" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ dom(bal)" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="acc ∈ dom(bal)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element6"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="acc" ac.soton.emfb.newName="acc" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element3"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.composedMachine>
<ac.soton.emfb.composedMachine ac.soton.emfb.compose="true" ac.soton.emfb.name="mBank_D" ac.soton.emfb.newName="mBank_D" name="internal_element2">
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="bal" ac.soton.emfb.newName="bal" name="internal_element1"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardAcct" ac.soton.emfb.newName="cardAcct" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmCash" ac.soton.emfb.newName="atmCash" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="processedDep" ac.soton.emfb.newName="processedDep" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardInAtmB" ac.soton.emfb.newName="cardInAtmB" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmDepAmB" ac.soton.emfb.newName="atmDepAmB" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvReqDep" ac.soton.emfb.newName="recvReqDep" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqDep ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvReqDep" ac.soton.emfb.updatedExpression="recvReqDep ∈ ℙ(ATM)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmDepAmB ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmDepAmB" ac.soton.emfb.updatedExpression="atmDepAmB ∈ ℙ(ATM × ℤ)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ∈ ℙ(ACCOUNT × ℤ)" ac.soton.emfb.name="typing_bal" ac.soton.emfb.updatedExpression="bal ∈ ℙ(ACCOUNT × ℤ)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ∈ ℙ(ATM × CARD)" ac.soton.emfb.name="typing_cardInAtmB" ac.soton.emfb.updatedExpression="cardInAtmB ∈ ℙ(ATM × CARD)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ∈ ℙ(ATM)" ac.soton.emfb.name="typing_processedDep" ac.soton.emfb.updatedExpression="processedDep ∈ ℙ(ATM)" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCash ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmCash" ac.soton.emfb.updatedExpression="atmCash ∈ ℙ(ATM × ℤ)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ∈ ℙ(CARD × ACCOUNT)" ac.soton.emfb.name="typing_cardAcct" ac.soton.emfb.updatedExpression="cardAcct ∈ ℙ(CARD × ACCOUNT)" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="Deposit_0_IntegralATM_0_inv1" ac.soton.emfb.updatedExpression="bal ∈ ACCOUNT ⇸ ℕ" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ∈ CARD ⇸ ACCOUNT" ac.soton.emfb.name="Deposit_0_IntegralATM_0_inv2" ac.soton.emfb.updatedExpression="cardAcct ∈ CARD ⇸ ACCOUNT" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCash ∈ ATM → ℕ" ac.soton.emfb.name="Deposit_1_inv2" ac.soton.emfb.updatedExpression="atmCash ∈ ATM → ℕ" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ∈ ATM ⇸ CARD" ac.soton.emfb.name="Deposit_4_inv3" ac.soton.emfb.updatedExpression="cardInAtmB ∈ ATM ⇸ CARD" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAmB ∈ ATM ⇸ ℕ" ac.soton.emfb.name="Deposit_4_inv5" ac.soton.emfb.updatedExpression="atmDepAmB ∈ ATM ⇸ ℕ" name="internal_element12"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_D" ac.soton.emfb.name="INITIALISATION" ac.soton.emfb.newName="INITIALISATION" name="internal_element1">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ≔ ∅" ac.soton.emfb.name="act15" ac.soton.emfb.updatedExpression="processedDep ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAmB ≔ ∅" ac.soton.emfb.name="act27" ac.soton.emfb.updatedExpression="atmDepAmB ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ≔ ∅" ac.soton.emfb.name="act25" ac.soton.emfb.updatedExpression="cardInAtmB ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ≔ ∅" ac.soton.emfb.name="act8" ac.soton.emfb.updatedExpression="cardAcct ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqDep ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="recvReqDep ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCash ≔ ATM × {0}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="atmCash ≔ ATM × {0}" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ≔ ∅" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="bal ≔ ∅" name="internal_element7"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_D" ac.soton.emfb.name="recvReqDeposit" ac.soton.emfb.newName="recvReqDeposit" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqDep ≔ recvReqDep ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="recvReqDep ≔ recvReqDep ∪ {a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB(a) ≔ c" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="cardInAtmB(a) ≔ c" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAmB(a) ≔ am" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="atmDepAmB(a) ≔ am" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element3"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_D" ac.soton.emfb.name="depositB" ac.soton.emfb.newName="depositB" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal(acc) ≔ bal(acc) + am" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal(acc) ≔ bal(acc) + am" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ≔ processedDep ∪ {a}" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="processedDep ≔ processedDep ∪ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCash(a) ≔ atmCash(a) + am" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="atmCash(a) ≔ atmCash(a) + am" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB(a) = c" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="cardInAtmB(a) = c" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(atmCash)" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="a ∈ dom(atmCash)" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(atmDepAmB)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a ∈ dom(atmDepAmB)" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ acc ∈ cardAcct" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="c ↦ acc ∈ cardAcct" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqDep" ac.soton.emfb.name="grd13" ac.soton.emfb.updatedExpression="a ∈ recvReqDep" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAmB(a) = am" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="atmDepAmB(a) = am" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="acc ∈ ACCOUNT" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ dom(bal)" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="acc ∈ dom(bal)" name="internal_element12"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element13"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="acc" ac.soton.emfb.newName="acc" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element4"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_D" ac.soton.emfb.name="sendRespDeposit" ac.soton.emfb.newName="sendRespDeposit" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqDep ≔ recvReqDep ∖ {a}" ac.soton.emfb.name="act10" ac.soton.emfb.updatedExpression="recvReqDep ≔ recvReqDep ∖ {a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAmB ≔ {a} ⩤ atmDepAmB" ac.soton.emfb.name="act8" ac.soton.emfb.updatedExpression="atmDepAmB ≔ {a} ⩤ atmDepAmB" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ {a} ⩤ cardInAtmB" ac.soton.emfb.name="act9" ac.soton.emfb.updatedExpression="cardInAtmB ≔ {a} ⩤ cardInAtmB" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ≔ processedDep ∖ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="processedDep ≔ processedDep ∖ {a}" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqDep" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="a ∈ recvReqDep" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(atmDepAmB)" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="a ∈ dom(atmDepAmB)" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ processedDep" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="a ∈ processedDep" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element5"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="false" ac.soton.emfb.machine="mBank_D" ac.soton.emfb.name="Transfer" ac.soton.emfb.newName="Transfer" name="internal_element5">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am &lt; bal(src_ac)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="am &lt; bal(src_ac)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ dom(bal)" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="dest_ac ∈ dom(bal)" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ≠ dest_ac" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="src_ac ≠ dest_ac" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ dom(bal)" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="src_ac ∈ dom(bal)" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ src_ac ∈ cardAcct" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="c ↦ src_ac ∈ cardAcct" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="src_ac ∈ ACCOUNT" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ ACCOUNT" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="dest_ac ∈ ACCOUNT" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element10"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="src_ac" ac.soton.emfb.newName="src_ac" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="dest_ac" ac.soton.emfb.newName="dest_ac" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element4"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.composedMachine>
<ac.soton.emfb.composedMachine ac.soton.emfb.compose="true" ac.soton.emfb.name="BANK_W" ac.soton.emfb.newName="BANK_W" name="internal_element3">
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="bal" ac.soton.emfb.newName="bal" name="internal_element1"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardAcct" ac.soton.emfb.newName="cardAcct" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="atmCash" ac.soton.emfb.newName="atmCash" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="withdrawOk" ac.soton.emfb.newName="withdrawOk" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="withdrawFail" ac.soton.emfb.newName="withdrawFail" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmWDAmB" ac.soton.emfb.newName="atmWDAmB" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardInAtmB" ac.soton.emfb.newName="cardInAtmB" name="internal_element7"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvReqWD" ac.soton.emfb.newName="recvReqWD" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqWD ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvReqWD" ac.soton.emfb.updatedExpression="recvReqWD ∈ ℙ(ATM)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ∈ ℙ(ACCOUNT × ℤ)" ac.soton.emfb.name="typing_bal" ac.soton.emfb.updatedExpression="bal ∈ ℙ(ACCOUNT × ℤ)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ∈ ℙ(ATM × CARD)" ac.soton.emfb.name="typing_cardInAtmB" ac.soton.emfb.updatedExpression="cardInAtmB ∈ ℙ(ATM × CARD)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOk ∈ ℙ(ATM)" ac.soton.emfb.name="typing_withdrawOk" ac.soton.emfb.updatedExpression="withdrawOk ∈ ℙ(ATM)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFail ∈ ℙ(ATM)" ac.soton.emfb.name="typing_withdrawFail" ac.soton.emfb.updatedExpression="withdrawFail ∈ ℙ(ATM)" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCash ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmCash" ac.soton.emfb.updatedExpression="atmCash ∈ ℙ(ATM × ℤ)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmWDAmB ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmWDAmB" ac.soton.emfb.updatedExpression="atmWDAmB ∈ ℙ(ATM × ℤ)" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ∈ ℙ(CARD × ACCOUNT)" ac.soton.emfb.name="typing_cardAcct" ac.soton.emfb.updatedExpression="cardAcct ∈ ℙ(CARD × ACCOUNT)" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="Withdraw_0_IntegralATM_0_inv1" ac.soton.emfb.updatedExpression="bal ∈ ACCOUNT ⇸ ℕ" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ∈ CARD ⇸ ACCOUNT" ac.soton.emfb.name="Withdraw_0_IntegralATM_0_inv2" ac.soton.emfb.updatedExpression="cardAcct ∈ CARD ⇸ ACCOUNT" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCash ∈ ATM → ℕ" ac.soton.emfb.name="Withdraw_1_inv3" ac.soton.emfb.updatedExpression="atmCash ∈ ATM → ℕ" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ∈ CARD ↔ ACCOUNT" ac.soton.emfb.name="Withdraw_2_inv16" ac.soton.emfb.updatedExpression="cardAcct ∈ CARD ↔ ACCOUNT" name="internal_element12"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ∈ ATM ⇸ CARD" ac.soton.emfb.name="Withdraw_4_inv3" ac.soton.emfb.updatedExpression="cardInAtmB ∈ ATM ⇸ CARD" name="internal_element13"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAmB ∈ ATM ⇸ ℕ" ac.soton.emfb.name="Withdraw_4_inv5" ac.soton.emfb.updatedExpression="atmWDAmB ∈ ATM ⇸ ℕ" name="internal_element14"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="INITIALISATION" ac.soton.emfb.newName="INITIALISATION" name="internal_element1">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqWD ≔  ∅" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="recvReqWD ≔  ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ≔ ∅" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ≔ ∅" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="cardAcct ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ≔ ∅" ac.soton.emfb.name="act28" ac.soton.emfb.updatedExpression="cardInAtmB ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOk ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="withdrawOk ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCash ≔ ATM × {0}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="atmCash ≔ ATM × {0}" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAmB ≔ ∅" ac.soton.emfb.name="act30" ac.soton.emfb.updatedExpression="atmWDAmB ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFail ≔ ∅" ac.soton.emfb.name="act19" ac.soton.emfb.updatedExpression="withdrawFail ≔ ∅" name="internal_element8"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="RecvReqWD" ac.soton.emfb.newName="RecvReqWD" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB(a) ≔ c" ac.soton.emfb.name="act8" ac.soton.emfb.updatedExpression="cardInAtmB(a) ≔ c" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAmB(a) ≔ am" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="atmWDAmB(a) ≔ am" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqWD ≔ recvReqWD ∪ {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="recvReqWD ≔ recvReqWD ∪ {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element3"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="withdrawOK" ac.soton.emfb.newName="withdrawOK" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal(acc) ≔ bal(acc) − am" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal(acc) ≔ bal(acc) − am" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCash(a) ≔ atmCash(a) − am" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="atmCash(a) ≔ atmCash(a) − am" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOk ≔ withdrawOk ∪  {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="withdrawOk ≔ withdrawOk ∪  {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am = atmWDAmB(a)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="am = atmWDAmB(a)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ withdrawOk" ac.soton.emfb.name="grd18" ac.soton.emfb.updatedExpression="a ∉ withdrawOk" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqWD" ac.soton.emfb.name="grd19" ac.soton.emfb.updatedExpression="a ∈ recvReqWD" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(atmWDAmB)" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a ∈ dom(atmWDAmB)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCash(a) ≥ am" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="atmCash(a) ≥ am" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqWD" ac.soton.emfb.name="grd15" ac.soton.emfb.updatedExpression="a ∈ recvReqWD" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ dom(bal)" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="acc ∈ dom(bal)" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal(acc) ≥ am" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="bal(acc) ≥ am" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ acc ∈ cardAcct" ac.soton.emfb.name="grd14" ac.soton.emfb.updatedExpression="c ↦ acc ∈ cardAcct" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="acc ∈ ACCOUNT" name="internal_element12"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd17" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element13"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element14"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c = cardInAtmB(a)" ac.soton.emfb.name="grd16" ac.soton.emfb.updatedExpression="c = cardInAtmB(a)" name="internal_element15"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element16"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="acc" ac.soton.emfb.newName="acc" name="internal_element4"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="SendRespWDok" ac.soton.emfb.newName="SendRespWDok" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ {a} ⩤ cardInAtmB" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="cardInAtmB ≔ {a} ⩤ cardInAtmB" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAmB ≔ {a} ⩤ atmWDAmB" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="atmWDAmB ≔ {a} ⩤ atmWDAmB" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqWD ≔ recvReqWD ∖ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="recvReqWD ≔ recvReqWD ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOk ≔ withdrawOk ∖ {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="withdrawOk ≔ withdrawOk ∖ {a}" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ withdrawOk" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="a ∈ withdrawOk" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqWD" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="a ∈ recvReqWD" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="withdrawFail" ac.soton.emfb.newName="withdrawFail" name="internal_element5">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFail ≔ withdrawFail ∪  {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="withdrawFail ≔ withdrawFail ∪  {a}" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am = atmWDAmB(a)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="am = atmWDAmB(a)" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ≤ atmCash(a)" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="am ≤ atmCash(a)" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(atmWDAmB)" ac.soton.emfb.name="grd10" ac.soton.emfb.updatedExpression="a ∈ dom(atmWDAmB)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB(a) = c" ac.soton.emfb.name="grd13" ac.soton.emfb.updatedExpression="cardInAtmB(a) = c" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ acc ∈ cardAcct" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="c ↦ acc ∈ cardAcct" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ dom(bal)" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="acc ∈ dom(bal)" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am &gt; bal(acc)" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="am &gt; bal(acc)" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="acc ∈ ACCOUNT" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element12"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqWD" ac.soton.emfb.name="grd16" ac.soton.emfb.updatedExpression="a ∈ recvReqWD" name="internal_element13"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element14"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="acc" ac.soton.emfb.newName="acc" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element4"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="SendRespWDfail" ac.soton.emfb.newName="SendRespWDfail" name="internal_element6">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ {a} ⩤ cardInAtmB" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="cardInAtmB ≔ {a} ⩤ cardInAtmB" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAmB ≔ {a} ⩤ atmWDAmB" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="atmWDAmB ≔ {a} ⩤ atmWDAmB" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqWD ≔ recvReqWD ∖ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="recvReqWD ≔ recvReqWD ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFail ≔ withdrawFail ∖ {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="withdrawFail ≔ withdrawFail ∖ {a}" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(atmWDAmB)" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="a ∈ dom(atmWDAmB)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtmB)" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtmB)" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="typing_a" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ withdrawFail" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="a ∈ withdrawFail" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvReqWD" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="a ∈ recvReqWD" name="internal_element5"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element1"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="false" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="Deposit" ac.soton.emfb.newName="Deposit" name="internal_element7">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal(acc) ≔ bal(acc) + am" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal(acc) ≔ bal(acc) + am" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ acc ∈ cardAcct" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="c ↦ acc ∈ cardAcct" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="acc ∈ ACCOUNT" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="acc ∈ dom(bal)" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="acc ∈ dom(bal)" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element6"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="acc" ac.soton.emfb.newName="acc" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element3"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="false" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="Transfer" ac.soton.emfb.newName="Transfer" name="internal_element8">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔  bal  {dest_ac ↦ (bal(dest_ac) + am), src_ac ↦(bal(src_ac) − am)}" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am &lt; bal(src_ac)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="am &lt; bal(src_ac)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ dom(bal)" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="dest_ac ∈ dom(bal)" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ≠ dest_ac" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="src_ac ≠ dest_ac" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ CARD" ac.soton.emfb.name="typing_c" ac.soton.emfb.updatedExpression="c ∈ CARD" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ dom(bal)" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="src_ac ∈ dom(bal)" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ↦ src_ac ∈ cardAcct" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="c ↦ src_ac ∈ cardAcct" name="internal_element7"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ∈ ACCOUNT" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="src_ac ∈ ACCOUNT" name="internal_element8"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac ∈ ACCOUNT" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="dest_ac ∈ ACCOUNT" name="internal_element9"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element10"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="src_ac" ac.soton.emfb.newName="src_ac" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="dest_ac" ac.soton.emfb.newName="dest_ac" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" name="internal_element4"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.composedMachine>
<ac.soton.emfb.composedContext ac.soton.emfb.compose="true" ac.soton.emfb.name="Context_BANK_W" name="internal_element1">
<ac.soton.emfb.composedSet ac.soton.emfb.compose="true" ac.soton.emfb.name="ATM" ac.soton.emfb.newName="ATM" name="internal_element1"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="true" ac.soton.emfb.name="ACCOUNT" ac.soton.emfb.newName="ACCOUNT" name="internal_element2"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="true" ac.soton.emfb.name="CARD" ac.soton.emfb.newName="CARD" name="internal_element3"/>
</ac.soton.emfb.composedContext>
<ac.soton.emfb.composedContext ac.soton.emfb.compose="true" ac.soton.emfb.name="Context_mBank_T" name="internal_element2">
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="ATM" ac.soton.emfb.newName="ATM" name="internal_element1"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="ACCOUNT" ac.soton.emfb.newName="ACCOUNT" name="internal_element2"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="CARD" ac.soton.emfb.newName="CARD" name="internal_element3"/>
</ac.soton.emfb.composedContext>
<ac.soton.emfb.composedContext ac.soton.emfb.compose="true" ac.soton.emfb.name="Context_mBank_D" name="internal_element3">
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="ATM" ac.soton.emfb.newName="ATM" name="internal_element1"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="ACCOUNT" ac.soton.emfb.newName="ACCOUNT" name="internal_element2"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="CARD" ac.soton.emfb.newName="CARD" name="internal_element3"/>
</ac.soton.emfb.composedContext>
<ac.soton.emfb.eventComposition ac.soton.emfb.compose="true" ac.soton.emfb.name="INITIALISATION" name="internal_element1">
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_T" ac.soton.emfb.name="INITIALISATION" ac.soton.emfb.newName="INITIALISATION" name="internal_element1">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmountB ≔ ∅" ac.soton.emfb.name="act32" ac.soton.emfb.updatedExpression="trAmountB ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferOk ≔ ∅" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="transferOk ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtmB ≔ ∅" ac.soton.emfb.name="act31" ac.soton.emfb.updatedExpression="cardInAtmB ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="bal ≔ ∅" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ≔ ∅" ac.soton.emfb.name="act15" ac.soton.emfb.updatedExpression="transferFail ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqTransfer ≔  ∅" ac.soton.emfb.name="act28" ac.soton.emfb.updatedExpression="recvReqTransfer ≔  ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccB≔ ∅" ac.soton.emfb.name="act42" ac.soton.emfb.updatedExpression="srcAccB≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardAcct ≔ ∅" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="cardAcct ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccB  ≔ ∅" ac.soton.emfb.name="act43" ac.soton.emfb.updatedExpression="destAccB  ≔ ∅" name="internal_element9"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mBank_D" ac.soton.emfb.name="INITIALISATION" ac.soton.emfb.newName="INITIALISATION" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ≔ ∅" ac.soton.emfb.name="act15" ac.soton.emfb.updatedExpression="processedDep ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAmB ≔ ∅" ac.soton.emfb.name="act27" ac.soton.emfb.updatedExpression="atmDepAmB ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ≔ ∅" ac.soton.emfb.name="act25" ac.soton.emfb.updatedExpression="cardInAtmB ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ≔ ∅" ac.soton.emfb.name="act8" ac.soton.emfb.updatedExpression="cardAcct ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqDep ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="recvReqDep ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCash ≔ ATM × {0}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="atmCash ≔ ATM × {0}" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ≔ ∅" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="bal ≔ ∅" name="internal_element7"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BANK_W" ac.soton.emfb.name="INITIALISATION" ac.soton.emfb.newName="INITIALISATION" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvReqWD ≔  ∅" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="recvReqWD ≔  ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="bal ≔ ∅" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="bal ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardAcct ≔ ∅" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="cardAcct ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtmB ≔ ∅" ac.soton.emfb.name="act28" ac.soton.emfb.updatedExpression="cardInAtmB ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOk ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="withdrawOk ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCash ≔ ATM × {0}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="atmCash ≔ ATM × {0}" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAmB ≔ ∅" ac.soton.emfb.name="act30" ac.soton.emfb.updatedExpression="atmWDAmB ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFail ≔ ∅" ac.soton.emfb.name="act19" ac.soton.emfb.updatedExpression="withdrawFail ≔ ∅" name="internal_element8"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.eventComposition>
</ac.soton.emfb.compositionFile>
