<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p28,p29"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p30,p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p12,p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p21,p26,p27,p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p44,p45"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p14,p6,p24,p20,p25,p23,p13,p18,p7,p2,p5,p19,p21,p3,p15,p16,p22,p12,p1,p10,p11,p26,p27,p28,p29,p30,p31,p32,p39,p40,p41,p42,p43,p44,p45,p47,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendReqDep∪{a}∈ℙ(reqDep∪{a})"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendReqDep∪{a}∈ℙ(sendReqDep∪recvReqDep∪{a})"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/grd5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p9,p31,p13,p30,p4,p27,p17,p23,p26,p7,p11,p6,p29,p14,p5,p28,p19,p25,p10,p1,p8,p16,p12,p20,p24,p22,p3,p21,p15,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="AccBalOnAtmA" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="activeAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="idleAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="activeAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈atm∧a∈trans⇒a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idleAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sentReqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trans∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="processedDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvReqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p21,p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p2,p10,p18,p14,p19,p16,p20,p9,p12,p4,p8,p13,p15,p7,p3,p1,p17,p21,p22,p23,p24,p25,p26,p33,p34,p35,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendReqDep ∖ {a}∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendReqDep ∖ {a}∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p7,p21,p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p2,p10,p18,p14,p19,p16,p20,p9,p12,p4,p8,p13,p15,p7,p3,p1,p17,p21,p22,p23,p24,p25,p26,p33,p34,p35,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="recvReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="recvReqDep∪{a}∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqDep∪{a}∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p32,p33,p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p32,p33,p34,p35"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p38,p39"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p4,p32,p33,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p35,p51,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p20,p8,p30,p25,p31,p29,p17,p23,p9,p15,p3,p7,p24,p26,p4,p19,p18,p16,p28,p13,p1,p21,p2,p11,p12,p6,p14,p27,p32,p33,p34,p35,p36,p37,p38,p39,p47,p48,p49,p50,p51,p52,p53,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqDep ∖ {a}∈ℙ(reqDep ∖ {a})"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="recvReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="recvReqDep ∖ {a}∈ℙ((sendReqDep∪recvReqDep) ∖ {a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p2,p34,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p1,p10,p19,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p18,p16,p22,p23,p24,p25,p26,p27,p34,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendRespDep∪{a}∈ℙ(respDep∪{a})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∪{a}∈ℙ(sendRespDep∪recvRespDep∪{a})"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespDep∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/grd5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p9,p31,p13,p30,p4,p27,p17,p23,p26,p7,p11,p6,p29,p14,p5,p28,p19,p25,p10,p1,p8,p16,p12,p20,p24,p22,p3,p21,p15,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="AccBalOnAtmA" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="activeAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="idleAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="activeAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈atm∧a∈trans⇒a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idleAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sentReqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trans∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="processedDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvReqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p2,p33,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p1,p10,p18,p14,p19,p16,p20,p9,p12,p4,p8,p13,p15,p7,p2,p3,p17,p21,p22,p23,p24,p25,p26,p33,p34,p35,p36,p37">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendRespDep ∖ {a}∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespDep∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendRespDep ∖ {a}∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p3,p33,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p1,p10,p18,p14,p19,p16,p20,p9,p12,p4,p8,p13,p15,p7,p2,p3,p17,p21,p22,p23,p24,p25,p26,p33,p34,p35,p36,p37">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespDep∪{a}∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvRespDep∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="recvRespDep∪{a}∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p1,p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p3,p11,p21,p15,p23,p19,p24,p10,p14,p4,p9,p12,p17,p16,p7,p2,p1,p18,p8,p20,p22,p25,p26,p27,p28,p29,p30,p37,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="recvRespDep∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespDep ∖ {a}∈ℙ(respDep ∖ {a})"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvRespDep ∖ {a}∈ℙ((sendRespDep∪recvRespDep) ∖ {a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/grd5/WD"/>
<org.eventb.core.prProof name="depositATM/act2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p18,p19"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqDep∪respDep">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqDep,respDep)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ATM"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/act3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtmA" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="accBalOnAtmA∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(accBalOnAtmA)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧accBalOnAtmA∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="accBalOnAtmA∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(accBalOnAtmA)∧accBalOnAtmA∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/act2/SIM"/>
<org.eventb.core.prProof name="depositATM/act3/SIM"/>
<org.eventb.core.prProof name="depositATM/grd11/GRD"/>
<org.eventb.core.prProof name="INITIALISATION/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∩(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∩(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p28,p29"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p30,p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p12,p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p3,p26,p27,p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p44,p45"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p14,p6,p24,p20,p25,p23,p13,p18,p7,p2,p5,p19,p21,p3,p15,p16,p22,p12,p1,p10,p11,p26,p27,p28,p29,p30,p31,p32,p39,p40,p41,p42,p43,p44,p45,p47,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="recvReqDep∈ℙ(sendReqDep∪recvReqDep∪{a})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep∪{a})"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p28,p29"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p30,p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p30,p31"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p12,p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p26,p27,p43"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p45,p46"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p14,p6,p24,p20,p25,p23,p13,p18,p7,p2,p5,p19,p21,p3,p15,p16,p22,p12,p1,p10,p11,p26,p27,p28,p29,p30,p31,p33,p41,p42,p43,p44,p45,p46,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p12,p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p26,p27,p43"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p45,p46"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p14,p6,p24,p20,p25,p23,p13,p18,p7,p2,p5,p19,p21,p3,p15,p16,p22,p12,p1,p10,p11,p26,p27,p28,p29,p30,p31,p33,p41,p42,p43,p44,p45,p46,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="reqDep∪{a}=(sendReqDep∪{a})∪recvReqDep"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqDep∪{a}=sendReqDep∪{a}∪recvReqDep"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqDep∪{a})∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep∪{a},sendReqDep∪{a},recvReqDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendReqDep∪recvReqDep∪{a}=sendReqDep∪{a}∪recvReqDep"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p2,p10,p18,p14,p19,p16,p20,p9,p12,p4,p8,p13,p15,p7,p3,p1,p17,p21,p22,p23,p24,p25,p26,p35,p36,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p17,p23,p24,p25,p26,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep,sendReqDep ∖ {a},recvReqDep∪{a})"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∪recvReqDep=(sendReqDep ∖ {a})∪recvReqDep∪{a}"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep=(sendReqDep ∖ {a})∪recvReqDep∪{a}"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(sendReqDep ∖ {a})∩(recvReqDep∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep=(sendReqDep ∖ {a})∪(recvReqDep∪{a})"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p32,p33,p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p32,p33,p34,p35"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p38,p39"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p26,p32,p33,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p35,p51,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p19,p8,p30,p25,p31,p29,p17,p23,p9,p15,p3,p7,p24,p26,p4,p20,p18,p16,p28,p13,p1,p21,p2,p11,p12,p6,p14,p27,p32,p33,p34,p35,p36,p37,p38,p39,p47,p48,p49,p50,p51,p52,p53,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="sendReqDep∈ℙ((sendReqDep∪recvReqDep) ∖ {a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="sendReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep ∖ {a})"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p32,p33,p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p32,p33,p34,p35"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p38,p39"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p32,p33,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p35,p51,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p19,p8,p30,p25,p31,p29,p17,p23,p9,p15,p3,p6,p24,p26,p4,p20,p18,p16,p28,p13,p1,p21,p2,p11,p12,p7,p14,p27,p32,p33,p34,p35,p36,p37,p38,p39,p48,p49,p50,p51,p52,p53,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p32,p33,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p35,p51,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p19,p8,p30,p25,p31,p29,p17,p23,p9,p15,p3,p6,p24,p26,p4,p20,p18,p16,p28,p13,p1,p21,p2,p11,p12,p7,p14,p27,p32,p33,p34,p35,p36,p37,p38,p39,p48,p49,p50,p51,p52,p53,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendReqDep∪recvReqDep) ∖ {a}=sendReqDep∪(recvReqDep ∖ {a})"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="sendReqDep∩(recvReqDep ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep ∖ {a},sendReqDep,recvReqDep ∖ {a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqDep ∖ {a}=sendReqDep∪(recvReqDep ∖ {a})"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p3,p34,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p1,p10,p19,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p18,p16,p22,p23,p24,p25,p26,p27,p34,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespDep∈ℙ(respDep∪{a})"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="recvRespDep∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="recvRespDep∈ℙ(sendRespDep∪recvRespDep∪{a})"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p1,p10,p19,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p18,p16,p22,p23,p24,p25,p26,p27,p36,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p1,p10,p19,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p18,p16,p22,p23,p24,p25,p26,p27,p36,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respDep∪{a},sendRespDep∪{a},recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respDep∪{a}=sendRespDep∪{a}∪recvRespDep"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendRespDep∪{a})∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespDep∪recvRespDep∪{a}=sendRespDep∪{a}∪recvRespDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respDep∪{a}=(sendRespDep∪{a})∪recvRespDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p1,p10,p18,p14,p19,p16,p20,p9,p12,p4,p8,p13,p15,p7,p2,p3,p17,p21,p22,p23,p24,p25,p26,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p17,p23,p24,p25,p26,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∪recvRespDep=(sendRespDep ∖ {a})∪recvRespDep∪{a}"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respDep=(sendRespDep ∖ {a})∪recvRespDep∪{a}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respDep,sendRespDep ∖ {a},recvRespDep∪{a})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respDep=(sendRespDep ∖ {a})∪(recvRespDep∪{a})"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(sendRespDep ∖ {a})∩(recvRespDep∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p2,p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p3,p11,p21,p15,p23,p19,p24,p10,p14,p4,p9,p12,p17,p16,p7,p2,p1,p18,p8,p20,p22,p25,p26,p27,p28,p29,p30,p37,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∈ℙ((sendRespDep∪recvRespDep) ∖ {a})"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(sendRespDep∪recvRespDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendRespDep∈ℙ(respDep ∖ {a})"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p3,p11,p21,p15,p22,p19,p24,p10,p14,p4,p8,p12,p17,p16,p7,p2,p1,p18,p9,p20,p23,p25,p26,p27,p28,p29,p30,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p3,p11,p21,p15,p22,p19,p24,p10,p14,p4,p8,p12,p17,p16,p7,p2,p1,p18,p9,p20,p23,p25,p26,p27,p28,p29,p30,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespDep∩(recvRespDep ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="(sendRespDep∪recvRespDep) ∖ {a}=sendRespDep∪(recvRespDep ∖ {a})"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respDep ∖ {a}=sendRespDep∪(recvRespDep ∖ {a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respDep ∖ {a},sendRespDep,recvRespDep ∖ {a})"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/act3/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewritesL1:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (cardInAtm(a)=c)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p19,p21"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (trans=reqDep∪processedDep∪respDep)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (reqDep=sentReqDep∪recvReqDep)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p4,p5,p6,p23"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (respDep=sentRespDep∪recvRespDep)" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p7,p24,p26,p27"/>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p10"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p8"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm(a)∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAccount">
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c ↦ acc∈cardAccount">
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/grd5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p19,p7,p35,p10,p34,p3,p32,p18,p24,p31,p4,p33,p28,p25,p8,p15,p30,p11,p6,p16,p29,p5,p21,p20,p26,p23,p2,p22,p14,p1,p12,p17,p13,p27,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="AccBalOnAtmA" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈atmCard"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd5/WD"/>
<org.eventb.core.prProof name="depositB/grd9/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (cardInAtm(a)=c)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p17,p19"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (reqDep=sentReqDep∪recvReqDep)" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p21,p6,p7,p8"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (respDep=sentRespDep∪recvRespDep)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p23,p25"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p29"/>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p12"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p10"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm(a)∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAccount">
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c ↦ acc∈cardAccount">
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv7/INV"/>
<org.eventb.core.prProof name="recvReqDeposit/inv7/INV"/>
<org.eventb.core.prProof name="depositB/inv7/INV"/>
<org.eventb.core.prProof name="depositB/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/act2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/act3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act12/SIM"/>
<org.eventb.core.prProof name="INITIALISATION/act13/SIM"/>
<org.eventb.core.prProof name="depositB/grd6/GRD"/>
<org.eventb.core.prProof name="depositB/act1/SIM"/>
<org.eventb.core.prProof name="depositB/act4/SIM"/>
<org.eventb.core.prProof name="depositATM/grd5/WD"/>
<org.eventb.core.prProof name="depositATM/grd10/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/grd7/GRD"/>
<org.eventb.core.prProof name="depositATM/act4/SIM"/>
<org.eventb.core.prProof name="sendReqDeposit/grd2/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p19,p21"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sentReqDep∪recvReqDep" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p4,p5,p6,p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sentRespDep∪recvRespDep" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p7,p24,p26,p27"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm(a)∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd2/GRD"/>
<org.eventb.core.prProof name="depositB/grd3/GRD"/>
<org.eventb.core.prProof name="depositB/grd5/GRD"/>
<org.eventb.core.prProof name="depositB/grd7/GRD"/>
<org.eventb.core.prProof name="depositB/grd10/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31,p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p31,p32"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p33,p34"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p33">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p31,p32"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p35">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p47,p48"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p17,p8,p29,p24,p30,p28,p16,p22,p9,p3,p6,p23,p12,p25,p4,p18,p19,p15,p27,p1,p20,p2,p11,p13,p7,p14,p26,p31,p32,p33,p34,p35,p36,p45,p46,p47,p48,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a∈sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="Transfer/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dest_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ∧src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/accBalOnAtmA/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sentReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sentRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p21,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sentReqDep∪recvReqDep" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sentRespDep∪recvRespDep" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p31,p9,p28,p30"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtmA" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="acc∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c∈CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmDepAm(a)∈ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm(a)∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="accBalOnAtmA{acc ↦ accBalOnAtmA(acc)+atmDepAm(a)}=accBalOnAtmA"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="accBalOnAtmA{acc ↦ accBalOnAtmA(acc)+am}=accBalOnAtmA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/act6/WD"/>
<org.eventb.core.prProof name="sendReqDeposit/act1/SIM"/>
<org.eventb.core.prProof name="depositB/grd12/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/act1/SIM"/>
<org.eventb.core.prProof name="depositATM/grd8/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p3,p11,p21,p15,p23,p19,p24,p10,p14,p4,p9,p12,p17,p16,p7,p2,p1,p18,p8,p20,p22,p25,p26,p27,p28,p29,p30,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="a∈sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act14/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))=(∅ ⦂ ℙ(ATM×ℤ))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act18/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ACCOUNT×ℤ))=(∅ ⦂ ℙ(ACCOUNT×ℤ))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/act2/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trans∪{a}=trans∪{a}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/act5/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="processedDep∪{a}=processedDep∪{a}"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/act3/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="processedDep ∖ {a}=processedDep ∖ {a}"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/act5/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trans ∖ {a}=trans ∖ {a}"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act15/SIM"/>
<org.eventb.core.prProof name="INITIALISATION/act4/SIM"/>
<org.eventb.core.prProof name="sendRespDeposit/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p1,p10,p18,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p19,p16,p22,p23,p24,p25,p26,p27,p34,p35,p36,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep ∖ {a})"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∈ℙ((sendReqDep∪recvReqDep) ∖ {a})"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p7,p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p1,p10,p18,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p19,p16,p22,p23,p24,p25,p26,p27,p34,p35,p36,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="recvReqDep∈ℙ(sendReqDep∪recvReqDep)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="recvReqDep ∖ {a}∈ℙ((sendReqDep∪recvReqDep) ∖ {a})"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqDep ∖ {a}∈ℙ(reqDep ∖ {a})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p1,p10,p18,p14,p21,p17,p20,p9,p12,p4,p8,p13,p15,p7,p2,p3,p19,p16,p22,p23,p24,p25,p26,p27,p35,p36,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p1,p10,p18,p14,p21,p17,p20,p9,p12,p4,p8,p13,p15,p7,p2,p3,p19,p16,p22,p23,p24,p25,p26,p27,p35,p36,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(sendReqDep∪recvReqDep) ∖ {a}=sendReqDep∪(recvReqDep ∖ {a})"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩(recvReqDep ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep ∖ {a},sendReqDep,recvReqDep ∖ {a})"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep ∖ {a}=sendReqDep∪(recvReqDep ∖ {a})"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqDep,sendReqDep,recvReqDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respDep,sendRespDep,recvRespDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p1,p10,p19,p14,p20,p17,p21,p9,p12,p4,p8,p13,p15,p7,p2,p3,p18,p16,p22,p23,p24,p25,p26,p27,p34,p35,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
