<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="ch.ethz.eventb.decomposition.mchBase">
<org.eventb.core.scSeesContext name="'" org.eventb.core.scTarget="/ATMproduct_TD/Context_mBank_T.bcc" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.seesContext#G"/>
<org.eventb.core.scInternalContext name="Context_mBank_T">
<org.eventb.core.scCarrierSet name="ACCOUNT" org.eventb.core.source="/ATMproduct_TD/Context_mBank_T.buc|org.eventb.core.contextFile#Context_mBank_T|org.eventb.core.carrierSet#(" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.scCarrierSet name="ATM" org.eventb.core.source="/ATMproduct_TD/Context_mBank_T.buc|org.eventb.core.contextFile#Context_mBank_T|org.eventb.core.carrierSet#'" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.scCarrierSet name="CARD" org.eventb.core.source="/ATMproduct_TD/Context_mBank_T.buc|org.eventb.core.contextFile#Context_mBank_T|org.eventb.core.carrierSet#)" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.scInternalContext>
<org.eventb.core.scInvariant name="Context_mBank_U" org.eventb.core.label="typing_srcAccB" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#0" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_V" org.eventb.core.label="typing_recvReqTransfer" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#1" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_W" org.eventb.core.label="typing_bal" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#2" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_X" org.eventb.core.label="typing_transferOk" org.eventb.core.predicate="transferOk∈ℙ(ATM)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#3" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_Y" org.eventb.core.label="typing_cardInAtmB" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#4" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_Z" org.eventb.core.label="typing_transferFail" org.eventb.core.predicate="transferFail∈ℙ(ATM)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#5" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_[" org.eventb.core.label="typing_destAccB" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#6" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_\" org.eventb.core.label="typing_trAmountB" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#7" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_]" org.eventb.core.label="typing_cardAcct" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#8" org.eventb.core.theorem="true"/>
<org.eventb.core.scInvariant name="Context_mBank_^" org.eventb.core.label="BalTransfer_0_IntegralATM_0_inv1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#9" org.eventb.core.theorem="false"/>
<org.eventb.core.scInvariant name="Context_mBank__" org.eventb.core.label="BalTransfer_0_IntegralATM_0_inv2" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#:" org.eventb.core.theorem="false"/>
<org.eventb.core.scInvariant name="Context_mBank_`" org.eventb.core.label="BalTransfer_4_inv23" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#;" org.eventb.core.theorem="false"/>
<org.eventb.core.scInvariant name="Context_mBank_a" org.eventb.core.label="BalTransfer_4_inv24" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#=" org.eventb.core.theorem="false"/>
<org.eventb.core.scInvariant name="Context_mBank_b" org.eventb.core.label="BalTransfer_4_inv5" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#&gt;" org.eventb.core.theorem="false"/>
<org.eventb.core.scInvariant name="Context_mBank_c" org.eventb.core.label="BalTransfer_4_inv6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.invariant#?" org.eventb.core.theorem="false"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="bal" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#'" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="cardAcct" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#(" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="cardInAtmB" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#," org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="destAccB" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#." org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="recvReqTransfer" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#\/" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="srcAccB" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#-" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="trAmountB" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#+" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="transferFail" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#*" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.scVariable ch.ethz.eventb.decomposition.nature="0" name="transferOk" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.variable#)" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="false" name="recvReqTransfes" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@">
<org.eventb.core.scAction name="'" org.eventb.core.assignment="bal ≔ ∅ ⦂ ℙ(ACCOUNT×ℤ)" org.eventb.core.label="act1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#'"/>
<org.eventb.core.scAction name="(" org.eventb.core.assignment="cardAcct ≔ ∅ ⦂ ℙ(CARD×ACCOUNT)" org.eventb.core.label="act2" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#("/>
<org.eventb.core.scAction name=")" org.eventb.core.assignment="transferOk ≔ ∅ ⦂ ℙ(ATM)" org.eventb.core.label="act14" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#)"/>
<org.eventb.core.scAction name="*" org.eventb.core.assignment="transferFail ≔ ∅ ⦂ ℙ(ATM)" org.eventb.core.label="act15" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#*"/>
<org.eventb.core.scAction name="+" org.eventb.core.assignment="recvReqTransfer ≔ ∅ ⦂ ℙ(ATM)" org.eventb.core.label="act28" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#+"/>
<org.eventb.core.scAction name="," org.eventb.core.assignment="cardInAtmB ≔ ∅ ⦂ ℙ(ATM×CARD)" org.eventb.core.label="act31" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#,"/>
<org.eventb.core.scAction name="-" org.eventb.core.assignment="trAmountB ≔ ∅ ⦂ ℙ(ATM×ℤ)" org.eventb.core.label="act32" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#-"/>
<org.eventb.core.scAction name="." org.eventb.core.assignment="srcAccB ≔ ∅ ⦂ ℙ(ATM×ACCOUNT)" org.eventb.core.label="act42" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#."/>
<org.eventb.core.scAction name="/" org.eventb.core.assignment="destAccB ≔ ∅ ⦂ ℙ(ATM×ACCOUNT)" org.eventb.core.label="act43" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#@|org.eventb.core.action#\/"/>
</org.eventb.core.scEvent>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="false" name="recvReqTransfet" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="RecvReqTransfer" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A">
<org.eventb.core.scGuard name="'" org.eventb.core.label="typing_c" org.eventb.core.predicate="c∈CARD" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.guard#9" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="(" org.eventb.core.label="typing_am" org.eventb.core.predicate="am∈ℤ" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.guard#:" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name=")" org.eventb.core.label="typing_src_ac" org.eventb.core.predicate="src_ac∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.guard#;" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="*" org.eventb.core.label="typing_a" org.eventb.core.predicate="a∈ATM" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.guard#=" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="+" org.eventb.core.label="typing_dest_ac" org.eventb.core.predicate="dest_ac∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.guard#&gt;" org.eventb.core.theorem="false"/>
<org.eventb.core.scParameter name="a" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.parameter#'" org.eventb.core.type="ATM"/>
<org.eventb.core.scParameter name="am" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.parameter#(" org.eventb.core.type="ℤ"/>
<org.eventb.core.scParameter name="c" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.parameter#)" org.eventb.core.type="CARD"/>
<org.eventb.core.scParameter name="dest_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.parameter#+" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scParameter name="src_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.parameter#*" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scAction name="dest_ad" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer∪{a}" org.eventb.core.label="act4" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.action#4"/>
<org.eventb.core.scAction name="dest_ae" org.eventb.core.assignment="trAmountB ≔ trAmountB{a ↦ am}" org.eventb.core.label="act6" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.action#5"/>
<org.eventb.core.scAction name="dest_af" org.eventb.core.assignment="cardInAtmB ≔ cardInAtmB{a ↦ c}" org.eventb.core.label="act8" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.action#6"/>
<org.eventb.core.scAction name="dest_ag" org.eventb.core.assignment="srcAccB ≔ srcAccB{a ↦ src_ac}" org.eventb.core.label="act9" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.action#7"/>
<org.eventb.core.scAction name="dest_ah" org.eventb.core.assignment="destAccB ≔ destAccB{a ↦ dest_ac}" org.eventb.core.label="act10" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#A|org.eventb.core.action#8"/>
</org.eventb.core.scEvent>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="false" name="recvReqTransfeu" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferOK" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B">
<org.eventb.core.scGuard name="'" org.eventb.core.label="typing_c" org.eventb.core.predicate="c∈CARD" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#A" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="(" org.eventb.core.label="typing_am" org.eventb.core.predicate="am∈ℤ" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#B" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name=")" org.eventb.core.label="typing_a" org.eventb.core.predicate="a∈ATM" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#C" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="*" org.eventb.core.label="grd1" org.eventb.core.predicate="src_ac∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#," org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="+" org.eventb.core.label="grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#-" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="," org.eventb.core.label="grd4" org.eventb.core.predicate="c ↦ src_ac∈cardAcct" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#." org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="-" org.eventb.core.label="grd5" org.eventb.core.predicate="am∈ℕ1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#\/" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="." org.eventb.core.label="grd6" org.eventb.core.predicate="src_ac∈dom(bal)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#0" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="/" org.eventb.core.label="grd7" org.eventb.core.predicate="dest_ac∈dom(bal)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#1" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="0" org.eventb.core.label="grd8" org.eventb.core.predicate="src_ac≠dest_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#2" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="1" org.eventb.core.label="grd9" org.eventb.core.predicate="am&lt;bal(src_ac)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#3" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="2" org.eventb.core.label="grd11" org.eventb.core.predicate="a∈dom(cardInAtmB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#4" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="3" org.eventb.core.label="grd12" org.eventb.core.predicate="c=cardInAtmB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#5" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="4" org.eventb.core.label="grd13" org.eventb.core.predicate="a∈dom(trAmountB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#6" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="5" org.eventb.core.label="grd20" org.eventb.core.predicate="a∈dom(srcAccB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#7" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="6" org.eventb.core.label="grd21" org.eventb.core.predicate="a∈dom(destAccB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#8" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="7" org.eventb.core.label="grd14" org.eventb.core.predicate="src_ac=srcAccB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#9" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="8" org.eventb.core.label="grd15" org.eventb.core.predicate="dest_ac=destAccB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#:" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="9" org.eventb.core.label="grd16" org.eventb.core.predicate="am=trAmountB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#;" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name=":" org.eventb.core.label="grd24" org.eventb.core.predicate="a∈recvReqTransfer" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.guard#=" org.eventb.core.theorem="false"/>
<org.eventb.core.scParameter name="a" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.parameter#+" org.eventb.core.type="ATM"/>
<org.eventb.core.scParameter name="am" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.parameter#)" org.eventb.core.type="ℤ"/>
<org.eventb.core.scParameter name="c" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.parameter#*" org.eventb.core.type="CARD"/>
<org.eventb.core.scParameter name="dest_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.parameter#(" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scParameter name="src_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.parameter#'" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scAction name="dest_ad" org.eventb.core.assignment="bal ≔ bal{dest_ac ↦ bal(dest_ac)+am,src_ac ↦ bal(src_ac) − am}" org.eventb.core.label="act1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.action#&gt;"/>
<org.eventb.core.scAction name="dest_ae" org.eventb.core.assignment="transferOk ≔ transferOk∪{a}" org.eventb.core.label="act5" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.action#?"/>
<org.eventb.core.scAction name="dest_af" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="act6" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#B|org.eventb.core.action#@"/>
</org.eventb.core.scEvent>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="false" name="recvReqTransfev" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendRespTransferOk" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C">
<org.eventb.core.scGuard name="'" org.eventb.core.label="typing_a" org.eventb.core.predicate="a∈ATM" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.guard#." org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="a∈transferOk" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
<org.eventb.core.scParameter name="a" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.parameter#'" org.eventb.core.type="ATM"/>
<org.eventb.core.scAction name="b" org.eventb.core.assignment="transferOk ≔ transferOk ∖ {a}" org.eventb.core.label="act2" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.action#)"/>
<org.eventb.core.scAction name="c" org.eventb.core.assignment="trAmountB ≔ {a} ⩤ trAmountB" org.eventb.core.label="act9" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.action#*"/>
<org.eventb.core.scAction name="d" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="act11" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.action#+"/>
<org.eventb.core.scAction name="e" org.eventb.core.assignment="srcAccB ≔ {a} ⩤ srcAccB" org.eventb.core.label="act12" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.action#,"/>
<org.eventb.core.scAction name="f" org.eventb.core.assignment="destAccB ≔ {a} ⩤ destAccB" org.eventb.core.label="act13" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#C|org.eventb.core.action#-"/>
</org.eventb.core.scEvent>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="false" name="recvReqTransfew" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="TransferFails" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D">
<org.eventb.core.scGuard name="'" org.eventb.core.label="typing_c" org.eventb.core.predicate="c∈CARD" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#?" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="(" org.eventb.core.label="typing_am" org.eventb.core.predicate="am∈ℤ" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#@" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name=")" org.eventb.core.label="typing_a" org.eventb.core.predicate="a∈ATM" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#A" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="*" org.eventb.core.label="grd1" org.eventb.core.predicate="src_ac∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#," org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="+" org.eventb.core.label="grd2" org.eventb.core.predicate="dest_ac∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#-" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="," org.eventb.core.label="grd5" org.eventb.core.predicate="am∈ℕ1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#." org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="-" org.eventb.core.label="grd6" org.eventb.core.predicate="src_ac∈dom(bal)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#\/" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="." org.eventb.core.label="grd7" org.eventb.core.predicate="dest_ac∈dom(bal)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#0" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="/" org.eventb.core.label="grd8" org.eventb.core.predicate="src_ac≠dest_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#1" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="0" org.eventb.core.label="grd9" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#2" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="1" org.eventb.core.label="grd11" org.eventb.core.predicate="a∈dom(cardInAtmB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#3" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="2" org.eventb.core.label="grd12" org.eventb.core.predicate="c=cardInAtmB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#4" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="3" org.eventb.core.label="grd13" org.eventb.core.predicate="a∈dom(trAmountB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#5" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="4" org.eventb.core.label="grd21" org.eventb.core.predicate="a∈dom(destAccB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#6" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="5" org.eventb.core.label="grd20" org.eventb.core.predicate="a∈dom(srcAccB)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#7" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="6" org.eventb.core.label="grd14" org.eventb.core.predicate="src_ac=srcAccB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#8" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="7" org.eventb.core.label="grd15" org.eventb.core.predicate="dest_ac=destAccB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#9" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="8" org.eventb.core.label="grd16" org.eventb.core.predicate="am=trAmountB(a)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#:" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="9" org.eventb.core.label="grd22" org.eventb.core.predicate="a∈recvReqTransfer" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.guard#;" org.eventb.core.theorem="false"/>
<org.eventb.core.scParameter name="a" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.parameter#+" org.eventb.core.type="ATM"/>
<org.eventb.core.scParameter name="am" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.parameter#)" org.eventb.core.type="ℤ"/>
<org.eventb.core.scParameter name="c" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.parameter#*" org.eventb.core.type="CARD"/>
<org.eventb.core.scParameter name="dest_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.parameter#(" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scParameter name="src_ac" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.parameter#'" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scAction name="dest_ad" org.eventb.core.assignment="transferFail ≔ transferFail∪{a}" org.eventb.core.label="act2" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.action#="/>
<org.eventb.core.scAction name="dest_ae" org.eventb.core.assignment="recvReqTransfer ≔ recvReqTransfer ∖ {a}" org.eventb.core.label="act3" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#D|org.eventb.core.action#&gt;"/>
</org.eventb.core.scEvent>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="false" name="recvReqTransfex" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="SendRespTransferFail" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E">
<org.eventb.core.scGuard name="'" org.eventb.core.label="typing_a" org.eventb.core.predicate="a∈ATM" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.guard#." org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="a∈transferFail" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
<org.eventb.core.scParameter name="a" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.parameter#'" org.eventb.core.type="ATM"/>
<org.eventb.core.scAction name="b" org.eventb.core.assignment="transferFail ≔ transferFail ∖ {a}" org.eventb.core.label="act2" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.action#)"/>
<org.eventb.core.scAction name="c" org.eventb.core.assignment="trAmountB ≔ {a} ⩤ trAmountB" org.eventb.core.label="act9" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.action#*"/>
<org.eventb.core.scAction name="d" org.eventb.core.assignment="cardInAtmB ≔ {a} ⩤ cardInAtmB" org.eventb.core.label="act11" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.action#+"/>
<org.eventb.core.scAction name="e" org.eventb.core.assignment="srcAccB ≔ {a} ⩤ srcAccB" org.eventb.core.label="act12" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.action#,"/>
<org.eventb.core.scAction name="f" org.eventb.core.assignment="destAccB ≔ {a} ⩤ destAccB" org.eventb.core.label="act13" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#E|org.eventb.core.action#-"/>
</org.eventb.core.scEvent>
<org.eventb.core.scEvent ch.ethz.eventb.decomposition.external="true" name="recvReqTransfey" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="Deposit" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F">
<org.eventb.core.scGuard name="'" org.eventb.core.label="typing_c" org.eventb.core.predicate="c∈CARD" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.guard#0" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="(" org.eventb.core.label="typing_am" org.eventb.core.predicate="am∈ℤ" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.guard#1" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name=")" org.eventb.core.label="grd1" org.eventb.core.predicate="acc∈ACCOUNT" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.guard#*" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="*" org.eventb.core.label="grd2" org.eventb.core.predicate="acc∈dom(bal)" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.guard#+" org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="+" org.eventb.core.label="grd3" org.eventb.core.predicate="am∈ℕ1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.guard#," org.eventb.core.theorem="false"/>
<org.eventb.core.scGuard name="," org.eventb.core.label="grd5" org.eventb.core.predicate="c ↦ acc∈cardAcct" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.guard#." org.eventb.core.theorem="false"/>
<org.eventb.core.scParameter name="acc" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.parameter#'" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.scParameter name="am" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.parameter#(" org.eventb.core.type="ℤ"/>
<org.eventb.core.scParameter name="c" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.parameter#)" org.eventb.core.type="CARD"/>
<org.eventb.core.scAction name="acd" org.eventb.core.assignment="bal ≔ bal{acc ↦ bal(acc)+am}" org.eventb.core.label="act1" org.eventb.core.source="/ATMproduct_TD/mBank_T.bum|org.eventb.core.machineFile#mBank_T|org.eventb.core.event#F|org.eventb.core.action#\/"/>
</org.eventb.core.scEvent>
</org.eventb.core.scMachineFile>
