<?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="ATM_W" ac.soton.emfb.newName="ATM_W" name="internal_element1">
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="validCard" ac.soton.emfb.newName="validCard" name="internal_element1"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="cardInAtm" ac.soton.emfb.newName="cardInAtm" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmWDAm" ac.soton.emfb.newName="atmWDAm" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="trans" ac.soton.emfb.newName="trans" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmCashA" ac.soton.emfb.newName="atmCashA" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="withdrawOkMsg" ac.soton.emfb.newName="withdrawOkMsg" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="withdrawFailMsg" ac.soton.emfb.newName="withdrawFailMsg" name="internal_element7"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvRespWDOk" ac.soton.emfb.newName="recvRespWDOk" name="internal_element8"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvRespWDFail" ac.soton.emfb.newName="recvRespWDFail" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCashA ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmCashA" ac.soton.emfb.updatedExpression="atmCashA ∈ ℙ(ATM × ℤ)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmWDAm ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmWDAm" ac.soton.emfb.updatedExpression="atmWDAm ∈ ℙ(ATM × ℤ)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ∈ ℙ(ATM × CARD)" ac.soton.emfb.name="typing_cardInAtm" ac.soton.emfb.updatedExpression="cardInAtm ∈ ℙ(ATM × CARD)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ∈ ℙ(ATM)" ac.soton.emfb.name="typing_trans" ac.soton.emfb.updatedExpression="trans ∈ ℙ(ATM)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDOk ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvRespWDOk" ac.soton.emfb.updatedExpression="recvRespWDOk ∈ ℙ(ATM)" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDFail ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvRespWDFail" ac.soton.emfb.updatedExpression="recvRespWDFail ∈ ℙ(ATM)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="withdrawOkMsg ∈ ℙ(ATM × BOOL)" ac.soton.emfb.name="typing_withdrawOkMsg" ac.soton.emfb.updatedExpression="withdrawOkMsg ∈ ℙ(ATM × BOOL)" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="withdrawFailMsg ∈ ℙ(ATM × BOOL)" ac.soton.emfb.name="typing_withdrawFailMsg" ac.soton.emfb.updatedExpression="withdrawFailMsg ∈ ℙ(ATM × BOOL)" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="validCard ∈ ℙ(CARD)" ac.soton.emfb.name="typing_validCard" ac.soton.emfb.updatedExpression="validCard ∈ ℙ(CARD)" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="validCard ⊆  CARD" ac.soton.emfb.name="Withdraw_0_IntegralATM_0_inv4" ac.soton.emfb.updatedExpression="validCard ⊆  CARD" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAm ∈ ATM ⇸ ℕ" ac.soton.emfb.name="Withdraw_2_inv9" ac.soton.emfb.updatedExpression="atmWDAm ∈ ATM ⇸ ℕ" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA ∈ ATM → ℕ" ac.soton.emfb.name="Withdraw_2_inv11" ac.soton.emfb.updatedExpression="atmCashA ∈ ATM → ℕ" name="internal_element12"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOkMsg ∈ ATM ⇸ BOOL" ac.soton.emfb.name="Withdraw_2_inv13" ac.soton.emfb.updatedExpression="withdrawOkMsg ∈ ATM ⇸ BOOL" name="internal_element13"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFailMsg ∈ ATM ⇸ BOOL" ac.soton.emfb.name="Withdraw_2_inv14" ac.soton.emfb.updatedExpression="withdrawFailMsg ∈ ATM ⇸ BOOL" name="internal_element14"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ∈ ATM ⇸ CARD" ac.soton.emfb.name="Withdraw_2_inv21" ac.soton.emfb.updatedExpression="cardInAtm ∈ ATM ⇸ CARD" name="internal_element15"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="∀ c · c ∈ ran(cardInAtm) ⇒ c ∈ validCard" ac.soton.emfb.name="Withdraw_2_inv22" ac.soton.emfb.updatedExpression="∀ c · c ∈ ran(cardInAtm) ⇒ c ∈ validCard" name="internal_element16"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="ATM_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="recvRespWDOk ≔  ∅" ac.soton.emfb.name="act23" ac.soton.emfb.updatedExpression="recvRespWDOk ≔  ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA ≔ ATM × {0}" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="atmCashA ≔ ATM × {0}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ ∅" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="trans ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOkMsg  ≔ ∅" ac.soton.emfb.name="act16" ac.soton.emfb.updatedExpression="withdrawOkMsg  ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDFail ≔  ∅" ac.soton.emfb.name="act25" ac.soton.emfb.updatedExpression="recvRespWDFail ≔  ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAm ≔ ∅" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="atmWDAm ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFailMsg ≔ ∅" ac.soton.emfb.name="act17" ac.soton.emfb.updatedExpression="withdrawFailMsg ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element9"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="ATM_W" ac.soton.emfb.name="SendReqWithdraw" ac.soton.emfb.newName="SendReqWithdraw" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAm(a) ≔ am" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="atmWDAm(a) ≔ am" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ trans" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="a ∉ trans" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ≤ atmCashA(a)" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="am ≤ atmCashA(a)" name="internal_element2"/>
<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_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ↦ c ∈ cardInAtm" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="a ↦ c ∈ cardInAtm" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="c ∈ validCard" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="a ∈ ATM" name="internal_element6"/>
<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_element7"/>
<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_element8"/>
<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_element9"/>
<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="ATM_W" ac.soton.emfb.name="RecvRespWDOk" ac.soton.emfb.newName="RecvRespWDOk" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDOk ≔  recvRespWDOk ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="recvRespWDOk ≔  recvRespWDOk ∪ {a}" 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_element1"/>
<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="ATM_W" ac.soton.emfb.name="RecvRespWDFail" ac.soton.emfb.newName="RecvRespWDFail" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDFail ≔  recvRespWDFail ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="recvRespWDFail ≔  recvRespWDFail ∪ {a}" 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_element1"/>
<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="ATM_W" ac.soton.emfb.name="withdrawOKAtm" ac.soton.emfb.newName="withdrawOKAtm" name="internal_element5">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA(a) ≔ atmCashA(a) − am" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="atmCashA(a) ≔ atmCashA(a) − am" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDOk ≔ recvRespWDOk ∖ {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="recvRespWDOk ≔ recvRespWDOk ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="trans ≔ trans ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOkMsg(a) ≔  TRUE" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="withdrawOkMsg(a) ≔  TRUE" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvRespWDOk" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="a ∈ recvRespWDOk" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ≤ atmCashA(a)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="am ≤ atmCashA(a)" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ∈ ℕ1 " ac.soton.emfb.name="grd10" ac.soton.emfb.updatedExpression="am ∈ ℕ1 " name="internal_element3"/>
<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_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom (atmCashA)" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="a ∈ dom (atmCashA)" 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="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.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="ATM_W" ac.soton.emfb.name="withdrawFailsAtm" ac.soton.emfb.newName="withdrawFailsAtm" name="internal_element6">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFailMsg(a) ≔  TRUE" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="withdrawFailMsg(a) ≔  TRUE" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDFail ≔ recvRespWDFail ∖ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="recvRespWDFail ≔ recvRespWDFail ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="trans ≔ trans ∖ {a}" name="internal_element3"/>
<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 ∈ recvRespWDFail" ac.soton.emfb.name="grd1" ac.soton.emfb.updatedExpression="a ∈ recvRespWDFail" 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="ATM_W" ac.soton.emfb.name="Deposit" ac.soton.emfb.newName="Deposit" name="internal_element7">
<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="am ∈ ℕ1" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="c ∈ validCard" 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="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element5"/>
<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="ATM_W" ac.soton.emfb.name="Transfer" ac.soton.emfb.newName="Transfer" name="internal_element8">
<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_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="am ∈ ℕ1" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="c ∈ validCard" name="internal_element4"/>
<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_element5"/>
<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_element6"/>
<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_element7"/>
<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="mATM_D" ac.soton.emfb.newName="mATM_D" name="internal_element2">
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="validCard" ac.soton.emfb.newName="validCard" name="internal_element1"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardInAtm" ac.soton.emfb.newName="cardInAtm" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="accBalOnAtm" ac.soton.emfb.newName="accBalOnAtm" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="trans" ac.soton.emfb.newName="trans" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="atmCashA" ac.soton.emfb.newName="atmCashA" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmDepAm" ac.soton.emfb.newName="atmDepAm" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvRespDep" ac.soton.emfb.newName="recvRespDep" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmDepAm ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmDepAm" ac.soton.emfb.updatedExpression="atmDepAm ∈ ℙ(ATM × ℤ)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCashA ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_atmCashA" ac.soton.emfb.updatedExpression="atmCashA ∈ ℙ(ATM × ℤ)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ∈ ℙ(ATM × CARD)" ac.soton.emfb.name="typing_cardInAtm" ac.soton.emfb.updatedExpression="cardInAtm ∈ ℙ(ATM × CARD)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ∈ ℙ(ATM)" ac.soton.emfb.name="typing_trans" ac.soton.emfb.updatedExpression="trans ∈ ℙ(ATM)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="accBalOnAtm ∈ ℙ(ACCOUNT × ℤ)" ac.soton.emfb.name="typing_accBalOnAtm" ac.soton.emfb.updatedExpression="accBalOnAtm ∈ ℙ(ACCOUNT × ℤ)" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ∈ ℙ(CARD)" ac.soton.emfb.name="typing_validCard" ac.soton.emfb.updatedExpression="validCard ∈ ℙ(CARD)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespDep ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvRespDep" ac.soton.emfb.updatedExpression="recvRespDep ∈ ℙ(ATM)" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ⊆  CARD" ac.soton.emfb.name="Deposit_0_IntegralATM_0_inv4" ac.soton.emfb.updatedExpression="validCard ⊆  CARD" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ∈ ATM ⇸ CARD" ac.soton.emfb.name="Deposit_1_inv3" ac.soton.emfb.updatedExpression="cardInAtm ∈ ATM ⇸ CARD" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAm ∈ ATM ⇸ ℕ" ac.soton.emfb.name="Deposit_2_inv8" ac.soton.emfb.updatedExpression="atmDepAm ∈ ATM ⇸ ℕ" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCashA ∈ ATM → ℕ" ac.soton.emfb.name="Deposit_2_inv10" ac.soton.emfb.updatedExpression="atmCashA ∈ ATM → ℕ" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="accBalOnAtm ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="Deposit_2_inv11" ac.soton.emfb.updatedExpression="accBalOnAtm ∈ ACCOUNT ⇸ ℕ" name="internal_element12"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="∀c· c ∈ ran(cardInAtm) ⇒ c ∈ validCard " ac.soton.emfb.name="Deposit_2_inv12" ac.soton.emfb.updatedExpression="∀c· c ∈ ran(cardInAtm) ⇒ c ∈ validCard " name="internal_element13"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_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="atmDepAm ≔ ∅" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="atmDepAm ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCashA ≔ ATM × {0}" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="atmCashA ≔ ATM × {0}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespDep ≔ ∅" ac.soton.emfb.name="act20" ac.soton.emfb.updatedExpression="recvRespDep ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ≔  ∅" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="trans ≔  ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="accBalOnAtm ≔ ∅" ac.soton.emfb.name="act11" ac.soton.emfb.updatedExpression="accBalOnAtm ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element7"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_D" ac.soton.emfb.name="sendReqDeposit" ac.soton.emfb.newName="sendReqDeposit" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∪ {a}" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="trans ≔ trans ∪ {a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAm(a) ≔ am" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="atmDepAm(a) ≔ am" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ trans" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="a ∉ trans" 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="cardInAtm(a) = c" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="cardInAtm(a) = c" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="c ∈ validCard" 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_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ ran(cardInAtm)" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="c ∈ ran(cardInAtm)" name="internal_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtm)" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="a ∈ dom(cardInAtm)" name="internal_element7"/>
<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_element8"/>
<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_element9"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="c" ac.soton.emfb.newName="c" 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.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_D" ac.soton.emfb.name="recvRespDeposit" ac.soton.emfb.newName="recvRespDeposit" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespDep ≔ recvRespDep ∪ {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="recvRespDep ≔ recvRespDep ∪ {a}" 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_element1"/>
<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="mATM_D" ac.soton.emfb.name="depositATM" ac.soton.emfb.newName="depositATM" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespDep ≔ recvRespDep ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="recvRespDep ≔ recvRespDep ∖ {a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="trans ≔ trans ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA(a) ≔ atmCashA(a) + am" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="atmCashA(a) ≔ atmCashA(a) + am" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom (atmDepAm)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="a ∈ dom (atmDepAm)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAm(a) = am" ac.soton.emfb.name="grd10" ac.soton.emfb.updatedExpression="atmDepAm(a) = am" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvRespDep" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="a ∈ recvRespDep" name="internal_element3"/>
<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_element4"/>
<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_element5"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="a" ac.soton.emfb.newName="a" name="internal_element2"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_D" ac.soton.emfb.name="Transfer" ac.soton.emfb.newName="Transfer" 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_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="am ∈ ℕ1" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="c ∈ validCard" name="internal_element4"/>
<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_element5"/>
<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_element6"/>
<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_element7"/>
<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="mATM_T" ac.soton.emfb.newName="mATM_T" name="internal_element3">
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="validCard" ac.soton.emfb.newName="validCard" name="internal_element1"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardInAtm" ac.soton.emfb.newName="cardInAtm" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="trAmount" ac.soton.emfb.newName="trAmount" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="transOkAtm" ac.soton.emfb.newName="transOkAtm" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="srcAcc" ac.soton.emfb.newName="srcAcc" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="destAcc" ac.soton.emfb.newName="destAcc" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvRespTransferOk" ac.soton.emfb.newName="recvRespTransferOk" name="internal_element7"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="recvRespTransferFail" ac.soton.emfb.newName="recvRespTransferFail" name="internal_element8"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="trans" ac.soton.emfb.newName="trans" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ∈ ℙ(ATM × CARD)" ac.soton.emfb.name="typing_cardInAtm" ac.soton.emfb.updatedExpression="cardInAtm ∈ ℙ(ATM × CARD)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ∈ ℙ(ATM)" ac.soton.emfb.name="typing_trans" ac.soton.emfb.updatedExpression="trans ∈ ℙ(ATM)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="trAmount ∈ ℙ(ATM × ℤ)" ac.soton.emfb.name="typing_trAmount" ac.soton.emfb.updatedExpression="trAmount ∈ ℙ(ATM × ℤ)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferOk ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvRespTransferOk" ac.soton.emfb.updatedExpression="recvRespTransferOk ∈ ℙ(ATM)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="transOkAtm ∈ ℙ(ATM × BOOL)" ac.soton.emfb.name="typing_transOkAtm" ac.soton.emfb.updatedExpression="transOkAtm ∈ ℙ(ATM × BOOL)" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferFail ∈ ℙ(ATM)" ac.soton.emfb.name="typing_recvRespTransferFail" ac.soton.emfb.updatedExpression="recvRespTransferFail ∈ ℙ(ATM)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="destAcc ∈ ℙ(ATM × ACCOUNT)" ac.soton.emfb.name="typing_destAcc" ac.soton.emfb.updatedExpression="destAcc ∈ ℙ(ATM × ACCOUNT)" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ∈ ℙ(CARD)" ac.soton.emfb.name="typing_validCard" ac.soton.emfb.updatedExpression="validCard ∈ ℙ(CARD)" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="srcAcc ∈ ℙ(ATM × ACCOUNT)" ac.soton.emfb.name="typing_srcAcc" ac.soton.emfb.updatedExpression="srcAcc ∈ ℙ(ATM × ACCOUNT)" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ⊆  CARD" ac.soton.emfb.name="BalTransfer_0_IntegralATM_0_inv4" ac.soton.emfb.updatedExpression="validCard ⊆  CARD" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtm ∈  ATM ⇸ CARD" ac.soton.emfb.name="BalTransfer_1_inv10" ac.soton.emfb.updatedExpression="cardInAtm ∈  ATM ⇸ CARD" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmount ∈ ATM ⇸ ℕ1" ac.soton.emfb.name="BalTransfer_2_inv8" ac.soton.emfb.updatedExpression="trAmount ∈ ATM ⇸ ℕ1" name="internal_element12"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm ∈ ATM ⇸ BOOL" ac.soton.emfb.name="BalTransfer_2_inv11" ac.soton.emfb.updatedExpression="transOkAtm ∈ ATM ⇸ BOOL" name="internal_element13"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAcc ∈ ATM ⇸ ACCOUNT" ac.soton.emfb.name="BalTransfer_2_inv12" ac.soton.emfb.updatedExpression="srcAcc ∈ ATM ⇸ ACCOUNT" name="internal_element14"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAcc ∈ ATM ⇸ ACCOUNT" ac.soton.emfb.name="BalTransfer_2_inv13" ac.soton.emfb.updatedExpression="destAcc ∈ ATM ⇸ ACCOUNT" name="internal_element15"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="∀ c · c ∈ ran(cardInAtm) ⇒ c ∈ validCard" ac.soton.emfb.name="BalTransfer_2_inv17" ac.soton.emfb.updatedExpression="∀ c · c ∈ ran(cardInAtm) ⇒ c ∈ validCard" name="internal_element16"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_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="destAcc ≔ ∅" ac.soton.emfb.name="act23" ac.soton.emfb.updatedExpression="destAcc ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAcc ≔ ∅" ac.soton.emfb.name="act22" ac.soton.emfb.updatedExpression="srcAcc ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm ≔ ∅" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="transOkAtm ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferFail ≔  ∅" ac.soton.emfb.name="act26" ac.soton.emfb.updatedExpression="recvRespTransferFail ≔  ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferOk ≔  ∅" ac.soton.emfb.name="act24" ac.soton.emfb.updatedExpression="recvRespTransferOk ≔  ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmount ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="trAmount ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ≔ ∅" ac.soton.emfb.name="act30" ac.soton.emfb.updatedExpression="trans ≔ ∅" name="internal_element9"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_T" ac.soton.emfb.name="SendReqTransfer" ac.soton.emfb.newName="SendReqTransfer" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∪ {a}" ac.soton.emfb.name="act11" ac.soton.emfb.updatedExpression="trans ≔ trans ∪ {a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAcc(a) ≔ dest_ac" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="destAcc(a) ≔ dest_ac" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmount(a) ≔ am" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="trAmount(a) ≔ am" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAcc(a) ≔ src_ac" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="srcAcc(a) ≔ src_ac" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ trans" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a ∉ trans" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ↦ c ∈ cardInAtm" ac.soton.emfb.name="grd7" ac.soton.emfb.updatedExpression="a ↦ c ∈ cardInAtm" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ ATM" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a ∈ ATM" 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="src_ac ≠ dest_ac" ac.soton.emfb.name="grd5" ac.soton.emfb.updatedExpression="src_ac ≠ dest_ac" name="internal_element5"/>
<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_element6"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="c ∈ validCard" 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="c" ac.soton.emfb.newName="c" name="internal_element1"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="src_ac" ac.soton.emfb.newName="src_ac" name="internal_element2"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="dest_ac" ac.soton.emfb.newName="dest_ac" name="internal_element3"/>
<ac.soton.emfb.composedParameter ac.soton.emfb.compose="true" ac.soton.emfb.name="am" ac.soton.emfb.newName="am" 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="mATM_T" ac.soton.emfb.name="RecvRespTransferOk" ac.soton.emfb.newName="RecvRespTransferOk" name="internal_element3">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferOk ≔  recvRespTransferOk ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="recvRespTransferOk ≔  recvRespTransferOk ∪ {a}" 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_element1"/>
<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="mATM_T" ac.soton.emfb.name="RecvRespTransferFail" ac.soton.emfb.newName="RecvRespTransferFail" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferFail ≔  recvRespTransferFail ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="recvRespTransferFail ≔  recvRespTransferFail ∪ {a}" 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_element1"/>
<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="mATM_T" ac.soton.emfb.name="TransferOKAtm" ac.soton.emfb.newName="TransferOKAtm" name="internal_element5">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm(a) ≔  TRUE" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="transOkAtm(a) ≔  TRUE" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferOk ≔ recvRespTransferOk ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="recvRespTransferOk ≔ recvRespTransferOk ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="trans ≔ trans ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvRespTransferOk" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a ∈ recvRespTransferOk" 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.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="mATM_T" ac.soton.emfb.name="TransferFailsAtm" ac.soton.emfb.newName="TransferFailsAtm" name="internal_element6">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm(a) ≔  FALSE" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="transOkAtm(a) ≔  FALSE" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferFail ≔ recvRespTransferFail ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="recvRespTransferFail ≔ recvRespTransferFail ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="trans ≔ trans ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ recvRespTransferFail" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a ∈ recvRespTransferFail" 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.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="mATM_T" ac.soton.emfb.name="Deposit" ac.soton.emfb.newName="Deposit" name="internal_element7">
<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="am ∈ ℕ1" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="am ∈ ℕ1" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c ∈ validCard" ac.soton.emfb.name="grd4" ac.soton.emfb.updatedExpression="c ∈ validCard" 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="am ∈ ℤ" ac.soton.emfb.name="typing_am" ac.soton.emfb.updatedExpression="am ∈ ℤ" name="internal_element5"/>
<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.composedContext ac.soton.emfb.compose="true" ac.soton.emfb.name="Context_ATM_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="CARD" ac.soton.emfb.newName="CARD" name="internal_element2"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="true" ac.soton.emfb.name="ACCOUNT" ac.soton.emfb.newName="ACCOUNT" name="internal_element3"/>
</ac.soton.emfb.composedContext>
<ac.soton.emfb.composedContext ac.soton.emfb.compose="true" ac.soton.emfb.name="Context_mATM_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="CARD" ac.soton.emfb.newName="CARD" name="internal_element2"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="ACCOUNT" ac.soton.emfb.newName="ACCOUNT" name="internal_element3"/>
</ac.soton.emfb.composedContext>
<ac.soton.emfb.composedContext ac.soton.emfb.compose="true" ac.soton.emfb.name="Context_mATM_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="CARD" ac.soton.emfb.newName="CARD" name="internal_element2"/>
<ac.soton.emfb.composedSet ac.soton.emfb.compose="false" ac.soton.emfb.name="ACCOUNT" ac.soton.emfb.newName="ACCOUNT" 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="ATM_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="recvRespWDOk ≔  ∅" ac.soton.emfb.name="act23" ac.soton.emfb.updatedExpression="recvRespWDOk ≔  ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA ≔ ATM × {0}" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="atmCashA ≔ ATM × {0}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ ∅" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="trans ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawOkMsg  ≔ ∅" ac.soton.emfb.name="act16" ac.soton.emfb.updatedExpression="withdrawOkMsg  ≔ ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespWDFail ≔  ∅" ac.soton.emfb.name="act25" ac.soton.emfb.updatedExpression="recvRespWDFail ≔  ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmWDAm ≔ ∅" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="atmWDAm ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="withdrawFailMsg ≔ ∅" ac.soton.emfb.name="act17" ac.soton.emfb.updatedExpression="withdrawFailMsg ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act2" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element9"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_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="atmDepAm ≔ ∅" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="atmDepAm ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="atmCashA ≔ ATM × {0}" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="atmCashA ≔ ATM × {0}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespDep ≔ ∅" ac.soton.emfb.name="act20" ac.soton.emfb.updatedExpression="recvRespDep ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ≔  ∅" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="trans ≔  ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="accBalOnAtm ≔ ∅" ac.soton.emfb.name="act11" ac.soton.emfb.updatedExpression="accBalOnAtm ≔ ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element7"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="mATM_T" 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="destAcc ≔ ∅" ac.soton.emfb.name="act23" ac.soton.emfb.updatedExpression="destAcc ≔ ∅" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAcc ≔ ∅" ac.soton.emfb.name="act22" ac.soton.emfb.updatedExpression="srcAcc ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm ≔ ∅" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="transOkAtm ≔ ∅" name="internal_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferFail ≔  ∅" ac.soton.emfb.name="act26" ac.soton.emfb.updatedExpression="recvRespTransferFail ≔  ∅" name="internal_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="recvRespTransferOk ≔  ∅" ac.soton.emfb.name="act24" ac.soton.emfb.updatedExpression="recvRespTransferOk ≔  ∅" name="internal_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmount ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="trAmount ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ≔ ∅" ac.soton.emfb.name="act30" ac.soton.emfb.updatedExpression="trans ≔ ∅" name="internal_element9"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.eventComposition>
</ac.soton.emfb.compositionFile>
