<?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="BalTransfer_2" ac.soton.emfb.newName="BalTransfer_2" 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="validCard" ac.soton.emfb.newName="validCard" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="cardAcct" ac.soton.emfb.newName="cardAcct" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="reqTransfer" ac.soton.emfb.newName="reqTransfer" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="transferOk" ac.soton.emfb.newName="transferOk" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="transferFail" ac.soton.emfb.newName="transferFail" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="cardInAtm" ac.soton.emfb.newName="cardInAtm" name="internal_element7"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="respTransferOk" ac.soton.emfb.newName="respTransferOk" name="internal_element8"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="respTransferFail" ac.soton.emfb.newName="respTransferFail" name="internal_element9"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="srcAccBalAtm" ac.soton.emfb.newName="srcAccBalAtm" name="internal_element10"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="destAccBalAtm" ac.soton.emfb.newName="destAccBalAtm" name="internal_element11"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="trAmount" ac.soton.emfb.newName="trAmount" name="internal_element12"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="transOkAtm" ac.soton.emfb.newName="transOkAtm" name="internal_element13"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="srcAcc" ac.soton.emfb.newName="srcAcc" name="internal_element14"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="destAcc" ac.soton.emfb.newName="destAcc" name="internal_element15"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="trans" ac.soton.emfb.newName="transT" name="internal_element16"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ∈ ℙ(ATM)" ac.soton.emfb.name="inv1" ac.soton.emfb.updatedExpression="transT∈ℙ(ATM)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqTransfer ∈ ℙ(trans)" ac.soton.emfb.name="inv3" ac.soton.emfb.updatedExpression="reqTransfer∈ℙ(transT)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferOk ∈ ℙ(trans)" ac.soton.emfb.name="inv6" ac.soton.emfb.updatedExpression="respTransferOk∈ℙ(transT)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferFail ∈ ℙ(trans)" ac.soton.emfb.name="inv7" ac.soton.emfb.updatedExpression="respTransferFail∈ℙ(transT)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="trAmount ∈ ATM ⇸ ℕ1" ac.soton.emfb.name="inv8" ac.soton.emfb.updatedExpression="trAmount∈ATM ⇸ ℕ1" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccBalAtm ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="inv9" ac.soton.emfb.updatedExpression="srcAccBalAtm∈ACCOUNT ⇸ ℕ" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccBalAtm ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="inv10" ac.soton.emfb.updatedExpression="destAccBalAtm∈ACCOUNT ⇸ ℕ" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm ∈ ATM ⇸ BOOL" ac.soton.emfb.name="inv11" ac.soton.emfb.updatedExpression="transTOkAtm∈ATM ⇸ BOOL" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAcc ∈ ATM ⇸ ACCOUNT" ac.soton.emfb.name="inv12" ac.soton.emfb.updatedExpression="srcAcc∈ATM ⇸ ACCOUNT" name="internal_element9"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAcc ∈ ATM ⇸ ACCOUNT" ac.soton.emfb.name="inv13" ac.soton.emfb.updatedExpression="destAcc∈ATM ⇸ ACCOUNT" name="internal_element10"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferOk ⊆transferOkA" ac.soton.emfb.name="inv15" ac.soton.emfb.updatedExpression="transTferOk⊆transTferOkA" name="internal_element11"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ⊆transferFailA" ac.soton.emfb.name="inv16" ac.soton.emfb.updatedExpression="transTferFail⊆transTferFailA" 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="inv17" ac.soton.emfb.updatedExpression="∀c·c∈ran(cardInAtm)⇒c∈validCard" name="internal_element13"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="partition(trans, reqTransfer, transferOk, transferFail, respTransferOk, respTransferFail)" ac.soton.emfb.name="inv18" ac.soton.emfb.updatedExpression="partition(trans, reqTransfer, transferOk, transferFail, respTransferOk, respTransferFail)" name="internal_element14"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BalTransfer_2" 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="transferOk ≔ ∅" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="transTferOk ≔ ∅" name="internal_element2"/>
<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_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqTransfer ≔ ∅" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="reqTransfer ≔ ∅" name="internal_element4"/>
<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_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferOk ≔ ∅" ac.soton.emfb.name="act16" ac.soton.emfb.updatedExpression="respTransferOk ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm ≔ ∅" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="transTOkAtm ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ≔ ∅" ac.soton.emfb.name="act15" ac.soton.emfb.updatedExpression="transTferFail ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccBalAtm ≔ ∅" ac.soton.emfb.name="act20" ac.soton.emfb.updatedExpression="destAccBalAtm ≔ ∅" name="internal_element9"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ ∅" ac.soton.emfb.name="act24" ac.soton.emfb.updatedExpression="transT ≔ ∅" name="internal_element10"/>
<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_element11"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferFail ≔ ∅" ac.soton.emfb.name="act17" ac.soton.emfb.updatedExpression="respTransferFail ≔ ∅" name="internal_element12"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccBalAtm ≔ ∅" ac.soton.emfb.name="act19" ac.soton.emfb.updatedExpression="srcAccBalAtm ≔ ∅" name="internal_element13"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element14"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element15"/>
<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_element16"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="BalTransfer_2" ac.soton.emfb.name="ReqTransfer" ac.soton.emfb.newName="ReqTransfer" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqTransfer ≔  reqTransfer ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="reqTransfer ≔ reqTransfer∪{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 ≔ destAcc{a ↦ dest_ac}" 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="transT ≔ transT∪{a}" name="internal_element3"/>
<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 ≔ trAmount{a ↦ am}" name="internal_element4"/>
<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 ≔ srcAcc{a ↦ src_ac}" name="internal_element5"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="c = cardInAtm(a)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="c=cardInAtm(a)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ trans" ac.soton.emfb.name="grd10" ac.soton.emfb.updatedExpression="a∉transT" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtm)" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a∈dom(cardInAtm)" name="internal_element3"/>
<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_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac ≠ dest_ac" ac.soton.emfb.name="grd6" ac.soton.emfb.updatedExpression="src_ac≠dest_ac" name="internal_element5"/>
<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_element6"/>
<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_element7"/>
<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_element8"/>
<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="BalTransfer_2" ac.soton.emfb.name="TransferOK" ac.soton.emfb.newName="TransferOK" name="internal_element3">
<ac.soton.emfb.composedEventRefines ac.soton.emfb.compose="true" ac.soton.emfb.newName="transferOK" name="internal_element1"/>
<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="reqTransfer ≔ reqTransfer ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="reqTransfer ≔ reqTransfer ∖ {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="transTferOk ≔ transTferOk∪{a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="am ≤ bal(src_ac)" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="am≤bal(src_ac)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="⊤ " ac.soton.emfb.name="grd18" ac.soton.emfb.updatedExpression="⊤" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="⊤ " ac.soton.emfb.name="grd19" ac.soton.emfb.updatedExpression="⊤" 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(cardInAtm)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a∈dom(cardInAtm)" 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(trAmount)" ac.soton.emfb.name="grd13" ac.soton.emfb.updatedExpression="a∈dom(trAmount)" 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 = cardInAtm(a)" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="c=cardInAtm(a)" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac = destAcc(a)" ac.soton.emfb.name="grd15" ac.soton.emfb.updatedExpression="dest_ac=destAcc(a)" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac = srcAcc(a)" ac.soton.emfb.name="grd14" ac.soton.emfb.updatedExpression="src_ac=srcAcc(a)" name="internal_element12"/>
<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_element13"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ reqTransfer" ac.soton.emfb.name="grd17" ac.soton.emfb.updatedExpression="a∈reqTransfer" 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 = trAmount(a)" ac.soton.emfb.name="grd16" ac.soton.emfb.updatedExpression="am=trAmount(a)" 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(destAcc)" ac.soton.emfb.name="grd21" ac.soton.emfb.updatedExpression="a∈dom(destAcc)" name="internal_element18"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(srcAcc)" ac.soton.emfb.name="grd20" ac.soton.emfb.updatedExpression="a∈dom(srcAcc)" 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="BalTransfer_2" ac.soton.emfb.name="RespTransferOk" ac.soton.emfb.newName="RespTransferOk" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferOk ≔  respTransferOk ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="respTransferOk ≔ respTransferOk∪{a}" name="internal_element1"/>
<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="transTferOk ≔ transTferOk ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ transferFail" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="a∉transTferFail" 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∈transTferOk" 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="BalTransfer_2" ac.soton.emfb.name="TransferFails" ac.soton.emfb.newName="TransferFails" name="internal_element5">
<ac.soton.emfb.composedEventRefines ac.soton.emfb.compose="true" ac.soton.emfb.newName="transferFails" name="internal_element1"/>
<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="transTferFail ≔ transTferFail∪{a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqTransfer ≔ reqTransfer ∖ {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="reqTransfer ≔ reqTransfer ∖ {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="a ∉ transferFail" ac.soton.emfb.name="grd18" ac.soton.emfb.updatedExpression="a∉transTferFail" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ transferOk" ac.soton.emfb.name="grd19" ac.soton.emfb.updatedExpression="a∉transTferOk" 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(cardInAtm)" ac.soton.emfb.name="grd11" ac.soton.emfb.updatedExpression="a∈dom(cardInAtm)" 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(trAmount)" ac.soton.emfb.name="grd13" ac.soton.emfb.updatedExpression="a∈dom(trAmount)" 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 = cardInAtm(a)" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="c=cardInAtm(a)" name="internal_element10"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="dest_ac = destAcc(a)" ac.soton.emfb.name="grd15" ac.soton.emfb.updatedExpression="dest_ac=destAcc(a)" name="internal_element11"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="src_ac = srcAcc(a)" ac.soton.emfb.name="grd14" ac.soton.emfb.updatedExpression="src_ac=srcAcc(a)" name="internal_element12"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ reqTransfer" ac.soton.emfb.name="grd17" ac.soton.emfb.updatedExpression="a∈reqTransfer" 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 = trAmount(a)" ac.soton.emfb.name="grd16" ac.soton.emfb.updatedExpression="am=trAmount(a)" name="internal_element15"/>
<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_element16"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(destAcc)" ac.soton.emfb.name="grd21" ac.soton.emfb.updatedExpression="a∈dom(destAcc)" name="internal_element17"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(srcAcc)" ac.soton.emfb.name="grd20" ac.soton.emfb.updatedExpression="a∈dom(srcAcc)" name="internal_element18"/>
<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="BalTransfer_2" ac.soton.emfb.name="RespTransferFail" ac.soton.emfb.newName="RespTransferFail" name="internal_element6">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferFail ≔  respTransferFail ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="respTransferFail ≔ respTransferFail∪{a}" name="internal_element1"/>
<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="transTferFail ≔ transTferFail ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ transferOk" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="a∉transTferOk" 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∈transTferFail" 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="BalTransfer_2" ac.soton.emfb.name="TransferOKAtm" ac.soton.emfb.newName="TransferOKAtm" name="internal_element7">
<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="transTOkAtm ≔ transTOkAtm{a ↦ TRUE}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="transT ≔ transT ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferOk ≔ respTransferOk ∖ {a}" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="respTransferOk ≔ respTransferOk ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ respTransferFail" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="a∉respTransferFail" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ respTransferOk" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a∈respTransferOk" 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="BalTransfer_2" ac.soton.emfb.name="TransferFailsAtm" ac.soton.emfb.newName="TransferFailsAtm" name="internal_element8">
<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="transTOkAtm ≔ transTOkAtm{a ↦ FALSE}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ trans ∖ {a}" ac.soton.emfb.name="act6" ac.soton.emfb.updatedExpression="transT ≔ transT ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferFail ≔ respTransferFail ∖ {a}" ac.soton.emfb.name="act5" ac.soton.emfb.updatedExpression="respTransferFail ≔ respTransferFail ∖ {a}" name="internal_element3"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∉ respTransferOk" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="a∉respTransferOk" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ respTransferFail" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a∈respTransferFail" 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="BalTransfer_2" ac.soton.emfb.name="Deposit" ac.soton.emfb.newName="Deposit" name="internal_element9">
<ac.soton.emfb.composedEventRefines ac.soton.emfb.compose="true" ac.soton.emfb.newName="Deposit" name="internal_element1"/>
<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 ≔ bal{acc ↦ bal(acc)+am}" 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_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="acc ∈ dom(bal)" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="acc∈dom(bal)" 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.composedMachine ac.soton.emfb.compose="true" ac.soton.emfb.name="Deposit_2" ac.soton.emfb.newName="Deposit_2" 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="validCard" ac.soton.emfb.newName="validCard" name="internal_element2"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardAcct" ac.soton.emfb.newName="cardAcct" name="internal_element3"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmCash" ac.soton.emfb.newName="atmCash" name="internal_element4"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="false" ac.soton.emfb.name="cardInAtm" ac.soton.emfb.newName="cardInAtm" name="internal_element5"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="trans" ac.soton.emfb.newName="transD" name="internal_element6"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="reqDep" ac.soton.emfb.newName="reqDep" name="internal_element7"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="respDep" ac.soton.emfb.newName="respDep" name="internal_element8"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="processedDep" ac.soton.emfb.newName="processedDep" name="internal_element9"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmDepAm" ac.soton.emfb.newName="atmDepAm" name="internal_element10"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="atmCashA" ac.soton.emfb.newName="atmCashA" name="internal_element11"/>
<ac.soton.emfb.composedVariable ac.soton.emfb.compose="true" ac.soton.emfb.name="accBalOnAtm" ac.soton.emfb.newName="accBalOnAtm" name="internal_element12"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="false" ac.soton.emfb.expression="trans ∈ ℙ(ATM)" ac.soton.emfb.name="inv4" ac.soton.emfb.updatedExpression="transD∈ℙ(ATM)" name="internal_element1"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqDep ∈ ℙ(trans)" ac.soton.emfb.name="inv5" ac.soton.emfb.updatedExpression="reqDep∈ℙ(transD)" name="internal_element2"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="respDep ∈ ℙ(trans)" ac.soton.emfb.name="inv6" ac.soton.emfb.updatedExpression="respDep∈ℙ(transD)" name="internal_element3"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ∈ ℙ(ATM)" ac.soton.emfb.name="inv7" ac.soton.emfb.updatedExpression="processedDep∈ℙ(ATM)" name="internal_element4"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmDepAm ∈ ATM ⇸ ℕ" ac.soton.emfb.name="inv8" ac.soton.emfb.updatedExpression="atmDepAm∈ATM ⇸ ℕ" name="internal_element5"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="partition(trans, reqDep, respDep)" ac.soton.emfb.name="inv9" ac.soton.emfb.updatedExpression="partition(trans, reqDep, respDep)" name="internal_element6"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA ∈ ATM → ℕ" ac.soton.emfb.name="inv10" ac.soton.emfb.updatedExpression="atmCashA∈ATM → ℕ" name="internal_element7"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="accBalOnAtm ∈ ACCOUNT ⇸ ℕ" ac.soton.emfb.name="inv11" ac.soton.emfb.updatedExpression="accBalOnAtm∈ACCOUNT ⇸ ℕ" name="internal_element8"/>
<ac.soton.emfb.composedInvariant ac.soton.emfb.compose="true" ac.soton.emfb.expression="∀c· c ∈ ran(cardInAtm) ⇒ c ∈ validCard " ac.soton.emfb.name="inv12" ac.soton.emfb.updatedExpression="∀c·c∈ran(cardInAtm)⇒c∈validCard" name="internal_element9"/>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="Deposit_2" 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="true" ac.soton.emfb.expression="reqDep ≔  ∅" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="reqDep ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respDep ≔ ∅" ac.soton.emfb.name="act16" ac.soton.emfb.updatedExpression="respDep ≔ ∅" name="internal_element3"/>
<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_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔  ∅" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="transD ≔ ∅" name="internal_element5"/>
<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_element6"/>
<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_element7"/>
<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_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="accBalOnAtm ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="accBalOnAtm ≔ ∅" name="internal_element9"/>
<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_element10"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA ≔ ATM × {0}" ac.soton.emfb.name="act17" ac.soton.emfb.updatedExpression="atmCashA ≔ ATM × {0}" name="internal_element11"/>
<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_element12"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="Deposit_2" ac.soton.emfb.name="reqDeposit" ac.soton.emfb.newName="reqDeposit" name="internal_element2">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqDep ≔ reqDep ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="reqDep ≔ reqDep∪{a}" name="internal_element1"/>
<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="transD ≔ transD∪{a}" name="internal_element2"/>
<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 ≔ atmDepAm{a ↦ am}" name="internal_element3"/>
<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∉transD" name="internal_element1"/>
<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_element2"/>
<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_element3"/>
<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_element4"/>
<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_element5"/>
<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_element6"/>
<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="Deposit_2" ac.soton.emfb.name="depositB" ac.soton.emfb.newName="depositB" name="internal_element3">
<ac.soton.emfb.composedEventRefines ac.soton.emfb.compose="true" ac.soton.emfb.newName="Deposit" name="internal_element1"/>
<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 ≔ 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 ≔ atmCash{a ↦ atmCash(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="grd11" ac.soton.emfb.updatedExpression="a∈dom(atmDepAm)" name="internal_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtm(a) = c" ac.soton.emfb.name="grd9" ac.soton.emfb.updatedExpression="cardInAtm(a)=c" 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 ∈ reqDep" ac.soton.emfb.name="grd10" ac.soton.emfb.updatedExpression="a∈reqDep" name="internal_element4"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ dom(cardInAtm)" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a∈dom(cardInAtm)" 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="atmDepAm(a) = am" ac.soton.emfb.name="grd12" ac.soton.emfb.updatedExpression="atmDepAm(a)=am" 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="am ∈ ℕ1" ac.soton.emfb.name="grd3" ac.soton.emfb.updatedExpression="am∈ℕ1" name="internal_element9"/>
<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_element10"/>
<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_element11"/>
<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="Deposit_2" ac.soton.emfb.name="respDeposit" ac.soton.emfb.newName="respDeposit" name="internal_element4">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respDep ≔ respDep ∪ {a}" ac.soton.emfb.name="act1" ac.soton.emfb.updatedExpression="respDep ≔ respDep∪{a}" name="internal_element1"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqDep ≔ reqDep ∖ {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="reqDep ≔ reqDep ∖ {a}" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="processedDep ≔ processedDep ∖ {a}" ac.soton.emfb.name="act3" ac.soton.emfb.updatedExpression="processedDep ≔ processedDep ∖ {a}" 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_element1"/>
<ac.soton.emfb.composedGuard ac.soton.emfb.compose="true" ac.soton.emfb.expression="a ∈ reqDep" ac.soton.emfb.name="grd2" ac.soton.emfb.updatedExpression="a∈reqDep" 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="Deposit_2" ac.soton.emfb.name="depositATM" ac.soton.emfb.newName="depositATM" name="internal_element5">
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respDep ≔ respDep ∖ {a}" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="respDep ≔ respDep ∖ {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="transD ≔ transD ∖ {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 ≔ 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 ∈ respDep" ac.soton.emfb.name="grd8" ac.soton.emfb.updatedExpression="a∈respDep" name="internal_element3"/>
<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="false" ac.soton.emfb.machine="Deposit_2" ac.soton.emfb.name="Transfer" ac.soton.emfb.newName="Transfer" name="internal_element6">
<ac.soton.emfb.composedEventRefines ac.soton.emfb.compose="true" ac.soton.emfb.newName="Transfer" name="internal_element1"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.composedMachine>
<ac.soton.emfb.composedContext ac.soton.emfb.compose="false" ac.soton.emfb.name="Deposit_CO2" name="internal_element1"/>
<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="BalTransfer_2" 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="transferOk ≔ ∅" ac.soton.emfb.name="act14" ac.soton.emfb.updatedExpression="transTferOk ≔ ∅" name="internal_element2"/>
<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_element3"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="reqTransfer ≔ ∅" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="reqTransfer ≔ ∅" name="internal_element4"/>
<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_element5"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferOk ≔ ∅" ac.soton.emfb.name="act16" ac.soton.emfb.updatedExpression="respTransferOk ≔ ∅" name="internal_element6"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transOkAtm ≔ ∅" ac.soton.emfb.name="act21" ac.soton.emfb.updatedExpression="transTOkAtm ≔ ∅" name="internal_element7"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="transferFail ≔ ∅" ac.soton.emfb.name="act15" ac.soton.emfb.updatedExpression="transTferFail ≔ ∅" name="internal_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="destAccBalAtm ≔ ∅" ac.soton.emfb.name="act20" ac.soton.emfb.updatedExpression="destAccBalAtm ≔ ∅" name="internal_element9"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔ ∅" ac.soton.emfb.name="act24" ac.soton.emfb.updatedExpression="transT ≔ ∅" name="internal_element10"/>
<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_element11"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respTransferFail ≔ ∅" ac.soton.emfb.name="act17" ac.soton.emfb.updatedExpression="respTransferFail ≔ ∅" name="internal_element12"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="srcAccBalAtm ≔ ∅" ac.soton.emfb.name="act19" ac.soton.emfb.updatedExpression="srcAccBalAtm ≔ ∅" name="internal_element13"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="cardInAtm ≔ ∅" ac.soton.emfb.name="act7" ac.soton.emfb.updatedExpression="cardInAtm ≔ ∅" name="internal_element14"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="validCard ≔ ∅" ac.soton.emfb.name="act4" ac.soton.emfb.updatedExpression="validCard ≔ ∅" name="internal_element15"/>
<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_element16"/>
</ac.soton.emfb.composedEvent>
<ac.soton.emfb.composedEvent ac.soton.emfb.compose="true" ac.soton.emfb.machine="Deposit_2" 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="true" ac.soton.emfb.expression="reqDep ≔  ∅" ac.soton.emfb.name="act13" ac.soton.emfb.updatedExpression="reqDep ≔ ∅" name="internal_element2"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="respDep ≔ ∅" ac.soton.emfb.name="act16" ac.soton.emfb.updatedExpression="respDep ≔ ∅" name="internal_element3"/>
<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_element4"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="trans ≔  ∅" ac.soton.emfb.name="act12" ac.soton.emfb.updatedExpression="transD ≔ ∅" name="internal_element5"/>
<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_element6"/>
<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_element7"/>
<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_element8"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="accBalOnAtm ≔ ∅" ac.soton.emfb.name="act18" ac.soton.emfb.updatedExpression="accBalOnAtm ≔ ∅" name="internal_element9"/>
<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_element10"/>
<ac.soton.emfb.composedAction ac.soton.emfb.compose="true" ac.soton.emfb.expression="atmCashA ≔ ATM × {0}" ac.soton.emfb.name="act17" ac.soton.emfb.updatedExpression="atmCashA ≔ ATM × {0}" name="internal_element11"/>
<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_element12"/>
</ac.soton.emfb.composedEvent>
</ac.soton.emfb.eventComposition>
<ac.soton.emfb.composedRefines ac.soton.emfb.compose="false" ac.soton.emfb.name="ATM_TD_1" name="internal_element1"/>
</ac.soton.emfb.compositionFile>
