<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="sendReqDeposit/grd1/GRD"/>
<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="sendReqDeposit/grd3/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/grd4/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/grd5/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/grd6/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/grd7/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/grd8/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/grd9/GRD"/>
<org.eventb.core.prProof name="sendReqDeposit/act1/SIM"/>
<org.eventb.core.prProof name="sendReqDeposit/act2/SIM"/>
<org.eventb.core.prProof name="sendReqDeposit/act3/SIM"/>
<org.eventb.core.prProof name="sendReqDeposit/act4/SIM"/>
<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/inv4/INV" 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,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×CARD))∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</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="p1,p2,p3" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×CARD))∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</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,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" 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="p13" org.eventb.core.prInfHyps="p42,p43,p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45"/>
<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="p26" org.eventb.core.prInfHyps="p46,p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p46,p47"/>
<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="p48,p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p48,p49"/>
<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="p10" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<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="p51"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p15"/>
<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="p42">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p42,p43,p44,p58"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p48">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p45,p59,p61,p62"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p23,p7,p40,p30,p41,p38,p18,p32,p28,p8,p17,p35,p6,p29,p31,p3,p21,p22,p39,p27,p2,p19,p11,p9,p37,p34,p12,p5,p25,p24,p33,p36,p16,p1,p14,p20,p15,p42,p43,p44,p45,p46,p47,p48,p49,p50,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66">
<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="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" org.eventb.core.type="ℙ(ATM)"/>
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ CARD"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<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="p42" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmM∪{a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p61" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" 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="sendReqDeposit/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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p23" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42"/>
<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="p11" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p54,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p20,p7,p35,p26,p36,p34,p17,p24,p9,p2,p6,p25,p27,p3,p19,p18,p33,p16,p32,p8,p31,p29,p12,p5,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p50,p51,p53,p54,p55,p56,p57,p58,p59">
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p46" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p58" 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="p55" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="cardInAtmM{a ↦ cardInAtm(a)}∈ATM ⇸ CARD"/>
<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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtmM{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" 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="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" 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/act6/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,p32,p33,p34,p35,p36,p37,p38,p39" 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="p21,p6,p39,p11,p38,p2,p36,p20,p27,p34,p3,p37,p30,p28,p7,p16,p33,p12,p5,p17,p31,p4,p23,p22,p29,p25,p35,p26,p32,p19,p10,p8,p24,p15,p1,p13,p18,p14,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="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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" 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="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p39" 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,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" 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="p13" org.eventb.core.prInfHyps="p41,p42,p43,p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44"/>
<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="p25" org.eventb.core.prInfHyps="p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46"/>
<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="p47,p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p47,p48"/>
<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="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p41,p42,p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p47">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p54,p56"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20,p7,p39,p29,p40,p38,p17,p31,p27,p8,p16,p34,p6,p28,p30,p3,p19,p21,p36,p26,p2,p18,p11,p9,p37,p33,p12,p5,p23,p22,p32,p15,p1,p10,p14,p24,p35,p41,p42,p43,p44,p45,p46,p47,p48,p54,p55,p56,p57,p58,p59">
<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="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" org.eventb.core.type="ℙ(ATM)"/>
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p58" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ CARD"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p56" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p52" 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="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmB∪{a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p50" 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="p39" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" 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="p17,p5,p35,p10,p34,p1,p32,p16,p23,p30,p2,p33,p26,p24,p6,p13,p29,p12,p4,p14,p27,p3,p20,p18,p25,p21,p31,p22,p28,p15,p9,p7,p19,p36,p8,p11">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmM ∖ {a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmB∈ℙ(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.prPred name="p36" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" 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="p17,p5,p35,p10,p34,p1,p32,p16,p23,p30,p2,p33,p26,p24,p6,p13,p29,p12,p4,p14,p27,p3,p20,p18,p25,p21,p31,p22,p28,p15,p9,p7,p19,p36,p8,p11">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmM∈atmM ∖ {a} ⇸ atmCard"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmB∈ℙ(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.prPred name="p36" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" 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="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<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(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="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<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 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="p40,p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41"/>
<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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p48,p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p7,p34,p25,p35,p33,p15,p23,p9,p1,p5,p24,p26,p3,p17,p18,p31,p14,p32,p8,p30,p28,p11,p6,p20,p19,p27,p13,p2,p12,p22,p29,p36,p37,p38,p39,p40,p41,p48,p49,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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p37" 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="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtmB{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p44" 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="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="p28" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p49" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p45" 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="p26" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p47" 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="p38" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p43" 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="p35" 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/act6/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,p32,p33,p34,p35,p36" 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="p17,p5,p35,p10,p34,p1,p32,p16,p23,p30,p2,p33,p26,p24,p6,p13,p29,p12,p4,p14,p27,p3,p20,p18,p25,p21,p31,p22,p28,p15,p9,p7,p19,p36,p8,p11">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtmM)∧cardInAtmM∈ATM ⇸ CARD"/>
<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.prPred name="p36" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42" 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,p42,p12,p41,p2,p38,p18,p27,p35,p3,p40,p30,p28,p8,p15,p34,p13,p6,p16,p31,p4,p23,p20,p29,p25,p37,p26,p33,p17,p10,p9,p36,p32,p11,p5,p22,p21,p1,p24,p14,p39">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="acc∈account"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<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="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<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="cardInAtmM∈atmM ⇸ atmCard"/>
<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="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtmB)∧cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd4/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,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50" 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="p14,p5,p50,p8,p49,p3,p45,p15,p41,p23,p4,p48,p20,p17,p6,p34,p21,p9,p28,p33,p42,p27,p37,p13,p18,p16,p24,p40,p44,p12,p7,p30,p46,p22,p31,p29,p38,p36,p26,p39,p10,p25,p32,p47,p19,p11,p1,p2,p35,p43">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p0" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd5/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,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52" 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="p16,p6,p52,p9,p51,p4,p47,p17,p43,p25,p5,p50,p22,p19,p7,p36,p23,p10,p30,p35,p44,p29,p39,p15,p20,p18,p26,p42,p46,p14,p8,p32,p48,p24,p33,p31,p40,p38,p28,p41,p11,p27,p34,p49,p21,p12,p2,p3,p37,p45,p1,p13">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd10/GRD" 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="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="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="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<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="p2" org.eventb.core.prInfHyps="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,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="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (cardInAtmB(a)=c)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p16,p18,p20"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (atmDepAmB(a)=am)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<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="p9">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p24,p5,p6,p7"/>
<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="p11">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p8,p26,p28"/>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p11"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p1"/>
</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.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="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtmB" 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="atmDepAmB(a)∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p14" 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="p30" 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="p12" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈atmCard">
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmB(a)∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<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.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" 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="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="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p29" 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="p18" 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="p8" 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="p24" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" 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="p28" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<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="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" 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="p9" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtmB(a)∈atmCard">
<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="a∈sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" 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="p21" org.eventb.core.predicate="cardInAtmB(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="p26" 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="p11" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd11/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,p36,p37,p38,p39,p40,p41" 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="p12" org.eventb.core.prInfHyps="p42,p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43"/>
<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="p26" org.eventb.core.prInfHyps="p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45"/>
<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="p46,p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p46,p47"/>
<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="p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p56"/>
<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 atmDepAmB(a)=am" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" 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="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p42,p43"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p58,p59"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p22,p9,p40,p29,p41,p39,p18,p27,p11,p4,p8,p28,p15,p30,p5,p20,p21,p37,p16,p36,p10,p35,p32,p13,p7,p25,p23,p31,p17,p34,p1,p24,p38,p14,p2,p3,p19,p33,p42,p43,p44,p45,p46,p47,p56,p57,p58,p59,p60,p61">
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p61" 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="p59" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" 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="p7" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p53" 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="p30" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" 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="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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="ACCOUNT,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="p12" org.eventb.core.prInfHyps="p39,p40,p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42"/>
<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="p43,p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p43,p44"/>
<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="p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46"/>
<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="p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p39,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p52,p54"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p17,p7,p36,p26,p38,p34,p14,p28,p24,p8,p13,p31,p6,p25,p27,p3,p16,p18,p32,p23,p2,p15,p10,p9,p33,p30,p11,p5,p20,p19,p29,p37,p35,p21,p1,p39,p40,p41,p42,p43,p44,p45,p46,p52,p53,p54,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.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="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" org.eventb.core.type="ℙ(ATM)"/>
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p54" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p50" 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="p23" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p48" 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="atmB ∖ {a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" 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="p16,p6,p36,p10,p34,p2,p31,p15,p22,p29,p3,p33,p25,p23,p7,p12,p28,p11,p5,p13,p26,p4,p18,p17,p24,p20,p30,p21,p27,p14,p9,p8,p35,p32,p19,p1">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmM∪{a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<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="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈processedDep"/>
</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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" 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="p16,p6,p37,p10,p35,p2,p31,p15,p22,p29,p3,p34,p25,p23,p7,p12,p28,p11,p5,p13,p26,p4,p18,p17,p24,p20,p30,p21,p27,p14,p9,p8,p36,p33,p19,p1,p32">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<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="p0" org.eventb.core.predicate="cardInAtmM{a ↦ cardInAtmB(a)}∈atmM∪{a} ⇸ atmCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈processedDep"/>
</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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" 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="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<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="p19" org.eventb.core.prInfHyps="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p7,p33,p22,p34,p31,p13,p20,p9,p2,p5,p21,p23,p3,p15,p16,p28,p12,p29,p8,p27,p26,p11,p6,p18,p17,p24,p32,p25,p30,p1,p35,p36,p37,p38,p39,p40,p47,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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<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="p35" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p43" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p50" 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="p48" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<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="p39" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p44" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" 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="p34" 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/act6/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,p32,p33,p34,p35,p36" 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="p16,p6,p36,p10,p34,p2,p31,p15,p22,p29,p3,p33,p25,p23,p7,p12,p28,p11,p5,p13,p26,p4,p18,p17,p24,p20,p30,p21,p27,p14,p9,p8,p35,p32,p19,p1">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<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="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtmB)∧cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈processedDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/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,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="ACCOUNT,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="p13" org.eventb.core.prInfHyps="p39,p40,p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42"/>
<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="p43,p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p43,p44"/>
<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="p3" org.eventb.core.prInfHyps="p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46"/>
<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="p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p39,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p52,p54"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p6,p36,p26,p38,p34,p15,p28,p24,p7,p14,p31,p5,p25,p27,p2,p17,p19,p32,p23,p1,p16,p10,p8,p33,p30,p11,p4,p21,p20,p29,p35,p37,p9,p12,p39,p40,p41,p42,p43,p44,p45,p46,p52,p53,p54,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.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="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" org.eventb.core.type="ℙ(ATM)"/>
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p49" 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="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p50" 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="p23" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmM ∖ {a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p48" 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="p38" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" 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="p9" org.eventb.core.prInfHyps="p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="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="p19" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<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="p3" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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.prRule name="r2" 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="p34" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r2" 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="p46" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p46,p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p6,p31,p22,p33,p29,p13,p20,p8,p1,p4,p21,p23,p2,p15,p16,p27,p12,p28,p7,p26,p25,p10,p5,p18,p17,p24,p30,p32,p11,p34,p35,p36,p37,p38,p39,p46,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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p42" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p43" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p45" 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="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" 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="p33" 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/inv5/INV" 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="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<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="p1,p2,p3" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p23" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42"/>
<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="p11" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p52"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p53,p54,p55"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20,p7,p35,p26,p36,p34,p17,p24,p9,p2,p6,p25,p27,p3,p19,p18,p33,p16,p32,p8,p31,p29,p12,p5,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p50,p51,p52,p53,p54,p55,p56,p57,p58">
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p46" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAmM{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p57" 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="p54" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" 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="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" 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,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" 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="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<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(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="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<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 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="p40,p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41"/>
<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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p49,p50"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p16,p7,p34,p25,p35,p33,p15,p23,p9,p1,p6,p24,p26,p3,p17,p18,p32,p14,p31,p8,p30,p28,p11,p5,p20,p19,p27,p13,p2,p12,p22,p29,p36,p37,p38,p39,p40,p41,p49,p50,p51,p52">
<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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="atmDepAmB{a ↦ atmDepAmM(a)}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p44" 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="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="p28" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAmB{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p50" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p45" 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="p26" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p47" 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="p38" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p43" 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="p35" 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/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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" 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="p17,p5,p35,p10,p34,p1,p32,p16,p23,p30,p2,p33,p26,p24,p6,p13,p29,p12,p4,p14,p27,p3,p20,p18,p25,p21,p31,p22,p28,p15,p9,p7,p19,p36,p8,p11">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ atmDepAmM∈atmM ∖ {a} ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmB∈ℙ(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.prPred name="p36" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/act5/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,p32,p33,p34,p35,p36" 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="p17,p5,p35,p10,p34,p1,p32,p16,p23,p30,p2,p33,p26,p24,p6,p13,p29,p12,p4,p14,p27,p3,p20,p18,p25,p21,p31,p22,p28,p15,p9,p7,p19,p36,p8,p11">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmM)∧atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmB∈ℙ(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.prPred name="p36" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd11/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" 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="p22,p9,p43,p13,p42,p4,p38,p21,p28,p36,p5,p41,p32,p29,p10,p18,p35,p14,p1,p8,p19,p33,p6,p24,p23,p30,p26,p37,p27,p34,p20,p12,p11,p3,p25,p7,p40,p15,p39,p16,p31,p17,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="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈atmCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmB)∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" 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="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<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="p19" org.eventb.core.prInfHyps="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p7,p33,p22,p34,p31,p13,p20,p9,p2,p5,p21,p23,p3,p15,p16,p28,p12,p29,p8,p27,p26,p11,p6,p18,p17,p24,p32,p25,p30,p1,p35,p36,p37,p38,p39,p40,p47,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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<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="p35" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p43" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p50" 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="p48" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<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="p39" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p44" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" 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="p34" 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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42" 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,p7,p42,p12,p40,p2,p37,p17,p26,p34,p3,p39,p29,p27,p8,p14,p33,p13,p6,p15,p30,p4,p22,p19,p28,p24,p36,p25,p32,p16,p10,p9,p35,p31,p11,p5,p21,p20,p41,p38,p23,p1">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAmM∈atmM∪{a} ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<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="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<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="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="a∈processedDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/act5/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,p32,p33,p34,p35,p36" 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="p16,p6,p36,p10,p34,p2,p31,p15,p22,p29,p3,p33,p25,p23,p7,p12,p28,p11,p5,p13,p26,p4,p18,p17,p24,p20,p30,p21,p27,p14,p9,p8,p35,p32,p19,p1">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<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="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmB)∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈processedDep"/>
</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,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" 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="p9" org.eventb.core.prInfHyps="p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="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="p19" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<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="p3" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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.prRule name="r2" 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="p34" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r2" 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="p46" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p46,p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p6,p31,p22,p33,p29,p13,p20,p8,p1,p4,p21,p23,p2,p15,p16,p27,p12,p28,p7,p26,p25,p10,p5,p18,p17,p24,p30,p32,p11,p34,p35,p36,p37,p38,p39,p46,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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p42" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p43" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p45" 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="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" 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="p33" 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="sendReqDeposit/act5/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" 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="p24,p8,p43,p13,p42,p4,p40,p23,p30,p38,p5,p41,p34,p31,p9,p19,p37,p14,p1,p7,p20,p35,p6,p26,p25,p32,p28,p39,p29,p36,p22,p12,p10,p3,p27,p18,p2,p15,p21,p17,p33,p11,p16">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<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="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p32" 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="p33" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd9/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,p36,p37,p38,p39,p40,p41,p42" 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="p43,p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p43,p44"/>
<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="p27" org.eventb.core.prInfHyps="p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46"/>
<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="p7" org.eventb.core.prInfHyps="p47,p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p47,p48"/>
<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="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p57"/>
<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 atmDepAmB(a)=am" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT1" 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="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p44"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p47">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p60,p61"/>
<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="p22,p10,p41,p30,p42,p39,p19,p28,p12,p5,p8,p29,p16,p31,p6,p21,p23,p37,p17,p38,p11,p36,p34,p14,p9,p26,p24,p32,p18,p35,p1,p25,p40,p15,p4,p3,p20,p33,p2,p43,p44,p45,p46,p47,p48,p57,p59,p60,p61,p62,p63">
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p3" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<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="p34" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p54" 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="p31" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" 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="depositB/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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" 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="p12" org.eventb.core.prInfHyps="p42,p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43"/>
<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="p26" org.eventb.core.prInfHyps="p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45"/>
<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="p46,p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p46,p47"/>
<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="p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p56"/>
<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 atmDepAmB(a)=am" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" 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="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p42,p43"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p58,p59"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p22,p9,p40,p29,p41,p39,p18,p27,p11,p4,p8,p28,p15,p30,p5,p20,p21,p37,p16,p36,p10,p35,p32,p13,p7,p25,p23,p31,p17,p34,p1,p24,p38,p14,p2,p3,p19,p33,p42,p43,p44,p45,p46,p47,p56,p57,p58,p59,p60,p61">
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p0" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p61" 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="p59" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" 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="p7" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p53" 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="p30" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" 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="depositB/grd9/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,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,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="⊤ goal" org.eventb.core.prGoal="p15" 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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<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="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="p14" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtmB)∧cardInAtmB∈ATM ⇸ CARD"/>
<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="p1" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="inv8/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,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,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="⊤ goal" org.eventb.core.prGoal="p15" 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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm∈ATM ⇸ CARD∧cardInAtmM∈ATM ⇸ CARD"/>
<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="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="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="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="p1" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="INITIALISATION/inv7/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="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×CARD))∧a∈dom(∅ ⦂ ℙ(ATM×CARD))⇒(∅ ⦂ ℙ(ATM×CARD))(a)=(∅ ⦂ ℙ(ATM×CARD))(a)"/>
<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/inv8/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="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×CARD))∧a∈dom(∅ ⦂ ℙ(ATM×CARD))⇒(∅ ⦂ ℙ(ATM×CARD))(a)=(∅ ⦂ ℙ(ATM×CARD))(a)"/>
<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="recvReqDeposit/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ATM,CARD" org.eventb.core.psManual="true">
<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="p6" org.eventb.core.prInfHyps="p7,p8,p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8,p9,p10"/>
<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="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="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="p14" org.eventb.core.prInfHyps="p15,p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p15,p16"/>
<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="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
<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="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p25,p26">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a0=a" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p33,p34,p26,p25,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p2,p47,p48,p49,p50,p51,p52"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</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="p54" org.eventb.core.prHyps="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p3,p25,p26,p53,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ CARD">
<org.eventb.core.prIdent name="atmB" 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="p20" 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="p31" org.eventb.core.predicate="a∈dom(cardInAtmB{a ↦ c})"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="respDep∈ℙ(trans)">
<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="p17" 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="p6" 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="p32" org.eventb.core.predicate="cardInAtm(a)=c"/>
<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.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)">
<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.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" 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="p14" 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="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmB{a ↦ c})⇒cardInAtm(a0)=(cardInAtmB{a ↦ c})(a0)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqDep∈ℙ(trans)">
<org.eventb.core.prIdent name="reqDep" 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="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="p8" 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="p53" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(atm)">
<org.eventb.core.prIdent name="atm" 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="p48" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtm(a0)=(cardInAtmB{a ↦ c})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a0∈dom(cardInAtm)∧a0∈dom(cardInAtmB{a ↦ c})⇒cardInAtm(a0)=(cardInAtmB{a ↦ c})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="a0∈dom(cardInAtmB{a ↦ c})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p40" 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="p41" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)">
<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.prPred>
<org.eventb.core.prPred name="p15" 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="p10" 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="p44" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ">
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" 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="p28" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm(a0)=c">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)">
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD">
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="processedDep∈ℙ(trans)">
<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="p52" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ CARD">
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)">
<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="p25" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" 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="p39" org.eventb.core.predicate="atmM∈ℙ(atm)">
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="cardInAtm(a0)=({a} ⩤ cardInAtmB)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)">
<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="p2" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p12" 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="p49" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" 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="p16" 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="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<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/inv8/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42" 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,p6,p41,p12,p40,p1,p38,p18,p27,p35,p2,p39,p30,p28,p7,p15,p34,p14,p5,p16,p31,p3,p24,p20,p29,p25,p37,p26,p33,p17,p10,p8,p36,p32,p11,p4,p23,p21,p22,p42,p9,p13">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<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="cardInAtmM∈atmM ⇸ atmCard"/>
<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="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom({a} ⩤ cardInAtmM)⇒cardInAtm(a0)=({a} ⩤ cardInAtmM)(a0)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv7/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" 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="p14,p5,p49,p8,p48,p3,p45,p15,p41,p23,p4,p47,p21,p18,p6,p34,p22,p9,p30,p33,p42,p29,p37,p13,p19,p17,p24,p40,p43,p12,p7,p31,p16,p27,p26,p38,p36,p28,p39,p10,p25,p32,p46,p20,p11,p1,p2,p35,p44">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂ATM·a∈recvReqDep⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈recvReqDep ∖ {a}⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv8/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" 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="p22,p8,p46,p12,p45,p4,p41,p21,p29,p39,p5,p44,p34,p30,p9,p17,p38,p13,p7,p18,p35,p6,p25,p23,p31,p27,p40,p28,p37,p19,p11,p10,p24,p33,p3,p26,p15,p43,p14,p42,p32,p16,p2,p1,p20,p36">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈recvReqDep ∖ {a}∧a0∈dom(cardInAtm)∧a0∈dom(cardInAtmB)⇒cardInAtm(a0)=cardInAtmB(a0)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀a⦂ATM·a∈recvReqDep⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈recvReqDep∧a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36,p37,p38,p39">
<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="p11" org.eventb.core.prInfHyps="p40,p41,p42,p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43"/>
<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="p25" org.eventb.core.prInfHyps="p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45"/>
<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="p21" org.eventb.core.prInfHyps="p46,p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p46,p47"/>
<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="p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p50"/>
<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="p44">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p41,p42"/>
<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="p46">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p51,p53"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p57">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p58,p59">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funOvr:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p61">
<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="p62" org.eventb.core.prHyps="p15,p6,p39,p37,p33,p23,p31,p3,p36,p26,p24,p7,p13,p28,p4,p12,p27,p2,p19,p16,p32,p22,p30,p14,p9,p8,p34,p29,p10,p5,p18,p17,p38,p35,p20,p1,p40,p41,p42,p43,p44,p45,p46,p47,p51,p52,p53,p54,p55,p56,p58,p59,p61">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p63">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funImgSimplifies:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p65">
<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="p65" org.eventb.core.prHyps="p15,p6,p39,p37,p33,p23,p31,p3,p36,p26,p24,p7,p13,p28,p4,p12,p27,p2,p19,p16,p32,p22,p30,p14,p9,p8,p34,p29,p10,p5,p18,p17,p38,p35,p20,p1,p40,p41,p42,p43,p44,p45,p46,p47,p51,p52,p53,p54,p55,p56,p58,p59,p63">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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.prPredRef name=".pred" org.eventb.core.prRef="p46"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p44"/>
</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="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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmB(a)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="cardInAtm(a0)=(cardInAtmM{a ↦ cardInAtmB(a)})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})⇒cardInAtm(a0)=(cardInAtmM{a ↦ cardInAtmB(a)})(a0)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmM(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})⇒cardInAtm(a0)=(cardInAtmM{a ↦ cardInAtmB(a)})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="cardInAtm(a0)=({a} ⩤ cardInAtmM)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inv9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a" 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="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="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p20,p21">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" 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="functional goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p24" 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.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="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<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="p2" org.eventb.core.predicate="atmDepAmM∈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="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="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="p18" 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="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="p20" org.eventb.core.predicate="a∈dom(atmDepAmM)">
<org.eventb.core.prIdent name="a" 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="p21" org.eventb.core.predicate="a∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a" 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="p24" org.eventb.core.predicate="atmDepAm∈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="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="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)∧a∈dom(atmDepAm)⇒atmDepAmM∈ATM ⇸ ℤ∧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="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="p19" org.eventb.core.predicate="a∈dom(atmDepAmM)∧a∈dom(atmDepAm)⇒atmDepAmM∈ATM ⇸ ℤ∧atmDepAm∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ∧atmDepAm∈ATM ⇸ ℤ"/>
<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="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="p23" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv9/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="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×ℤ))⇒a∈dom(∅ ⦂ ℙ(ATM×ℤ))∧(∅ ⦂ ℙ(ATM×ℤ))(a)=(∅ ⦂ ℙ(ATM×ℤ))(a)"/>
<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/inv9/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p23" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42"/>
<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="p11" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p56"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p57,p58,p59"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p20,p7,p35,p26,p36,p34,p17,p24,p9,p2,p5,p25,p27,p3,p18,p19,p33,p16,p32,p8,p31,p29,p12,p6,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p54,p55,p56,p57,p58,p59,p60,p61,p62">
<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="p63">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p64">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p64">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" 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="p69" org.eventb.core.prHyps="p68">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct in hyps (¬a0=a)" org.eventb.core.prHyps="p64,p68"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p68">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p64">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct in hyps (¬a0=a)" org.eventb.core.prHyps="p64,p68"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p68">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p56"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p57,p58,p59"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p20,p7,p35,p26,p36,p34,p17,p24,p9,p2,p5,p25,p27,p3,p18,p19,p33,p16,p32,p8,p31,p29,p12,p6,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p68,p54,p55,p56,p57,p58,p59,p60,p61,p62">
<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.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p38" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="am=({a} ⩤ atmDepAm)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(atmDepAmM{a ↦ am})⇒a0∈dom(atmDepAm{a ↦ am})∧(atmDepAmM{a ↦ am})(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="am=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="a0∈dom(atmDepAm{a ↦ am})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p19" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="am=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="({a} ⩤ atmDepAmM)(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="({a} ⩤ atmDepAmM)(a0)=am">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a0∈dom(atmDepAm{a ↦ am})∧(atmDepAmM{a ↦ am})(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="atmDepAmM(a0)=({a} ⩤ atmDepAm)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(atmDepAmM{a ↦ am})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" 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="p58" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="(atmDepAmM{a ↦ am})(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="am=am"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="atmDepAmM(a0)=am">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="({a} ⩤ atmDepAmM)(a0)=({a} ⩤ atmDepAm)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" 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="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmM{a ↦ am})⇒a0∈dom(atmDepAm{a ↦ am})∧(atmDepAmM{a ↦ am})(a0)=(atmDepAm{a ↦ am})(a0)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" 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="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.contrHyps:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv9/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42" 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,p6,p41,p12,p40,p1,p38,p18,p27,p35,p2,p39,p30,p28,p7,p15,p34,p14,p5,p16,p31,p3,p24,p20,p29,p25,p37,p26,p33,p17,p10,p8,p36,p32,p11,p4,p23,p21,p22,p42,p9,p13">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<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="cardInAtmM∈atmM ⇸ atmCard"/>
<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="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ atmDepAmM)⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmM)(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv9/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" 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="p14,p5,p49,p8,p48,p3,p45,p15,p40,p23,p4,p47,p21,p18,p6,p33,p22,p9,p29,p32,p41,p28,p36,p13,p19,p17,p24,p39,p43,p12,p7,p30,p16,p26,p42,p37,p35,p27,p38,p10,p25,p31,p46,p20,p11,p1,p2,p34,p44">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂ATM·a∈recvReqDep⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂ATM·a∈recvReqDep⇒a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv9/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36,p37,p38,p39,p40">
<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="p11" org.eventb.core.prInfHyps="p41,p42,p43,p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44"/>
<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="p25" org.eventb.core.prInfHyps="p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46"/>
<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="p21" org.eventb.core.prInfHyps="p47,p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p47,p48"/>
<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="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<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="p45">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p41,p42,p43"/>
<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="p47">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p52,p54"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p58">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p59,p60">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funOvr:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
<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="p63" org.eventb.core.prHyps="p15,p6,p40,p38,p34,p23,p32,p4,p37,p27,p24,p7,p13,p29,p5,p12,p28,p3,p19,p16,p33,p22,p31,p14,p9,p8,p1,p35,p30,p10,p26,p18,p17,p39,p36,p20,p2,p41,p42,p43,p44,p45,p46,p47,p48,p52,p53,p54,p55,p56,p57,p59,p60,p62">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p64">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funImgSimplifies:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p66">
<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="p66" org.eventb.core.prHyps="p15,p6,p40,p38,p34,p23,p32,p4,p37,p27,p24,p7,p13,p29,p5,p12,p28,p3,p19,p16,p33,p22,p31,p14,p9,p8,p1,p35,p30,p10,p26,p18,p17,p39,p36,p20,p2,p41,p42,p43,p44,p45,p46,p47,p48,p52,p53,p54,p55,p56,p57,p59,p60,p64">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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.prPredRef name=".pred" org.eventb.core.prRef="p47"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p45"/>
</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="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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmB(a)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="cardInAtm(a0)=(cardInAtmM{a ↦ cardInAtmB(a)})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})⇒cardInAtm(a0)=(cardInAtmM{a ↦ cardInAtmB(a)})(a0)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmM(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})⇒cardInAtm(a0)=(cardInAtmM{a ↦ cardInAtmB(a)})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="cardInAtm(a0)=({a} ⩤ cardInAtmM)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)⇒a∈dom(atmDepAm)∧atmDepAmB(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inv10/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a" 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="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="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p20,p21,p22">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p25" 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.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="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈dom(atmDepAmB)">
<org.eventb.core.prIdent name="a" 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="p19" org.eventb.core.predicate="a∈dom(atmDepAmB)∧a∈recvReqDep∧a∈dom(atmDepAm)⇒atmDepAm∈ATM ⇸ ℤ∧atmDepAmB∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep∧a∈dom(atmDepAm)⇒atmDepAm∈ATM ⇸ ℤ∧atmDepAmB∈ATM ⇸ ℤ"/>
<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="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="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="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="p18" 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="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="p22" org.eventb.core.predicate="a∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a" 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="p23" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</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="p8" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)">
<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="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="p9" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep">
<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="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="p21" org.eventb.core.predicate="a∈recvReqDep">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv10/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="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×ℤ))∧a∈(∅ ⦂ ℙ(ATM))⇒a∈dom(∅ ⦂ ℙ(ATM×ℤ))∧(∅ ⦂ ℙ(ATM×ℤ))(a)=(∅ ⦂ ℙ(ATM×ℤ))(a)"/>
<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/inv10/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p23" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42"/>
<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="p11" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p51,p52">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p58,p59,p60"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p18,p7,p35,p26,p36,p34,p17,p24,p9,p2,p5,p25,p27,p3,p19,p20,p33,p16,p32,p8,p31,p29,p12,p6,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p52,p55,p56,p57,p58,p59,p60,p61,p62,p63">
<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="p64">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p65">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p58,p59,p60"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a0=a" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p65">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p51,p52"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p18,p7,p35,p26,p36,p34,p17,p24,p9,p2,p5,p25,p27,p3,p19,p20,p33,p16,p32,p8,p31,p29,p12,p6,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p52,p65,p55,p56,p57,p58,p59,p60,p61,p62,p63,p67,p68">
<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="p71" org.eventb.core.prHyps="p70">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p58,p59,p60"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p18,p7,p35,p26,p36,p34,p17,p24,p9,p2,p5,p25,p27,p3,p19,p20,p33,p16,p32,p8,p31,p29,p12,p6,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p52,p70,p55,p56,p57,p58,p59,p60,p61,p62,p63">
<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.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p67" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="({a} ⩤ atmDepAm)(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="am=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="a0∈dom(atmDepAm{a ↦ am})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(atmDepAmB)∧a0∈recvReqDep⇒a0∈dom(atmDepAm{a ↦ am})∧(atmDepAm{a ↦ am})(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="(atmDepAm{a ↦ am})(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p62" 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="p59" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="am=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a0∈recvReqDep">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB)∧a0∈recvReqDep⇒a0∈dom(atmDepAm{a ↦ am})∧(atmDepAm{a ↦ am})(a0)=atmDepAmB(a0)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="a0∈dom(atmDepAm{a ↦ am})∧(atmDepAm{a ↦ am})(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" 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="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(atmDepAmB)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" 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="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv10/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="ACCOUNT,ATM,CARD" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p46,p47">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p14,p47,p5,p46,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a0=a" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p46,p47"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p18,p7,p39,p8,p40,p22,p29,p41,p26,p38,p17,p12,p27,p10,p31,p1,p11,p6,p28,p30,p4,p19,p20,p25,p3,p36,p16,p37,p9,p35,p33,p13,p5,p23,p21,p32,p15,p2,p14,p24,p34,p46,p47,p51,p53,p54,p56">
<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.prAnte name="(" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p58">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p18,p7,p39,p8,p40,p22,p29,p41,p26,p38,p17,p12,p27,p10,p31,p1,p11,p6,p28,p30,p4,p19,p20,p25,p3,p36,p16,p37,p9,p35,p33,p13,p5,p23,p21,p32,p15,p2,p14,p24,p34,p46,p47,p58">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p48" org.eventb.core.predicate="a0∈dom(atmDepAm)∧atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ am})∧a0∈recvReqDep∪{a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="atmDepAm(a)=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p42" 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="p14" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB{a ↦ am})∧a0∈recvReqDep∪{a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="a∈dom(atmDepAmB{a ↦ am})"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="a0∈recvReqDep∪{a}">
<org.eventb.core.prIdent name="a0" 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="p52" org.eventb.core.predicate="atmDepAm(a0)=am">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="a∈recvReqDep∪{a}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="atmDepAm(a0)=({a} ⩤ atmDepAmB)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="a∈dom(atmDepAmB{a ↦ atmDepAmM(a)})"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ am})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv10/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36,p37,p38,p39,p40,p41,p42" 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="p13" org.eventb.core.prInfHyps="p43,p44,p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p43,p44,p45,p46"/>
<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="p27" org.eventb.core.prInfHyps="p47,p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p47,p48"/>
<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="p49,p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p49,p50"/>
<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="p51"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p59,p60">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p1"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAmB(a)=am" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p47">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p44,p45"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p46,p66,p68"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p20,p9,p41,p30,p42,p40,p19,p28,p11,p17,p4,p8,p29,p31,p5,p23,p21,p37,p16,p38,p10,p36,p33,p12,p7,p26,p25,p32,p18,p35,p15,p1,p24,p39,p14,p2,p3,p22,p34,p43,p44,p45,p46,p47,p48,p49,p50,p59,p60,p63,p64,p65,p66,p67,p68,p69,p70,p71">
<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="p72">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p1"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAmB(a)=am" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p47">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p44,p45"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p46,p66,p68"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p20,p9,p41,p30,p42,p40,p19,p28,p11,p17,p4,p8,p29,p31,p5,p23,p21,p37,p16,p38,p10,p36,p33,p12,p7,p26,p25,p32,p18,p35,p15,p1,p24,p39,p14,p2,p3,p22,p34,p43,p44,p45,p46,p47,p48,p49,p50,p59,p60,p63,p64,p65,p66,p67,p68,p69,p70,p71">
<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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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(atmDepAmB)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="cardInAtmB(a)∈validCard"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<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="p43" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="a0∈dom(atmDepAm)∧atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p71" 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="p68" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" 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="p7" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="processedDep∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="a0∈recvReqDep ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB)∧a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=atmDepAmB(a0)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="a0∈dom(atmDepAmB)∧a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="a0∈dom(atmDepAmB)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r7" 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="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv10/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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" 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="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<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="p19" org.eventb.core.prInfHyps="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p50,p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p54,p55"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p14,p7,p32,p22,p34,p30,p13,p20,p9,p2,p6,p21,p23,p3,p15,p16,p29,p12,p28,p8,p27,p25,p11,p5,p18,p17,p24,p33,p26,p31,p1,p35,p36,p37,p38,p39,p40,p50,p51,p54,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.prAnte name="(" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p54,p55"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p14,p7,p32,p22,p34,p30,p13,p20,p9,p2,p6,p21,p23,p3,p15,p16,p29,p12,p28,p8,p27,p25,p11,p5,p18,p17,p24,p33,p26,p31,p1,p35,p36,p37,p38,p39,p40,p50,p51,p54,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="1.1.1.1"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB) ∖ {a}∧a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=({a} ⩤ atmDepAmB)(a0)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(atmDepAmB) ∖ {a}∧a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p44" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ atmDepAmB)∧a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=({a} ⩤ atmDepAmB)(a0)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a0∈dom(atmDepAm)∧atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(atmDepAmB) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p55" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈recvReqDep ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p45" 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="p58" org.eventb.core.predicate="atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB) ∖ {a}∧a0∈recvReqDep ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=atmDepAmB(a0)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p43" 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="p34" 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="r8" 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.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r6" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv11/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="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×CARD))⇒a∈dom(∅ ⦂ ℙ(ATM×CARD))"/>
<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/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p23" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42"/>
<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="p11" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p14,p51"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p56"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p57,p58,p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p18,p7,p35,p26,p36,p34,p17,p24,p9,p2,p6,p25,p27,p3,p19,p20,p32,p16,p33,p8,p31,p29,p12,p5,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62">
<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.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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p50" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ c})⇒a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ cardInAtm(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtmM{a ↦ c})⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p61" 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="p58" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ c})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" 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="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" 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="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv11/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42" 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,p6,p41,p12,p40,p1,p38,p18,p27,p35,p2,p39,p30,p28,p7,p15,p34,p14,p5,p16,p31,p3,p24,p20,p29,p25,p37,p26,p33,p17,p10,p8,p36,p32,p11,p4,p23,p21,p22,p42,p9,p13">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ cardInAtmM)⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<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="cardInAtmM∈atmM ⇸ atmCard"/>
<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="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.psManual="true">
<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="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="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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p12">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p13">
<org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1,p2,p13,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p11" 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="p14" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p10" 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="p12" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})⇒a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" 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="p8" 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="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="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="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="p13" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<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="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtmM{a ↦ cardInAtmB(a)})⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<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.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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" 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="p9" org.eventb.core.prInfHyps="p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="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="p19" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<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="p3" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="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.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r5" 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="p34" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r5" 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="p50" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p50,p51"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p14,p6,p31,p22,p32,p29,p13,p20,p8,p1,p5,p21,p23,p2,p15,p16,p28,p12,p27,p7,p26,p25,p10,p4,p18,p17,p24,p30,p33,p11,p34,p35,p36,p37,p38,p39,p48,p50,p51,p52,p53">
<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="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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a0∈dom(cardInAtmM) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<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="p43" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ cardInAtmM)⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p44" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p46" 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="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="a0∈dom(cardInAtmM) ∖ {a}⇒a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" 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="p32" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtmM) ∖ {a}⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv12/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="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×CARD))⇒a∈dom(∅ ⦂ ℙ(ATM×CARD))"/>
<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="recvReqDeposit/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.psManual="true">
<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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p7">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p8">
<org.eventb.core.prRule name="org.eventb.pp.pp:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p8,p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</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.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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p6" 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="p9" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a0∈dom(cardInAtmB{a ↦ c})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p5" 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="p4" 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="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtmB{a ↦ c})⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a0∈dom(cardInAtmB{a ↦ c})⇒a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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" 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="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<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="p19" org.eventb.core.prInfHyps="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p52"/>
<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="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p51,p52"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p14,p7,p32,p22,p34,p30,p13,p20,p9,p2,p6,p21,p23,p3,p15,p16,p29,p12,p28,p8,p27,p25,p11,p5,p18,p17,p24,p33,p26,p31,p1,p35,p36,p37,p38,p39,p40,p49,p51,p52,p53,p54">
<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="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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p44" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(cardInAtmB) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" 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="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ cardInAtmB)⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p52" 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="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtmB) ∖ {a}⇒a0∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a0∈dom(cardInAtmB) ∖ {a}⇒a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p45" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p43" 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="p34" 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="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv9/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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" 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="p9" org.eventb.core.prInfHyps="p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="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="p19" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<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="p3" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="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.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r7" 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="p34" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r7" 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="p52" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p52,p53"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p14,p6,p31,p22,p32,p29,p13,p20,p8,p1,p5,p21,p23,p2,p15,p16,p28,p12,p27,p7,p26,p25,p10,p4,p18,p17,p24,p30,p33,p11,p34,p35,p36,p37,p38,p39,p49,p52,p53,p54,p55">
<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.prAnte name="(" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r7" 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="p34" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r7" 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="p52" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p52,p53"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p14,p6,p31,p22,p32,p29,p13,p20,p8,p1,p5,p21,p23,p2,p15,p16,p28,p12,p27,p7,p26,p25,p10,p4,p18,p17,p24,p30,p33,p11,p34,p35,p36,p37,p38,p39,p49,p52,p53,p54,p55">
<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="1.1.1.0"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a0∈dom(atmDepAmM) ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(atmDepAm)∧atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmM) ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAmM(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p43" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ atmDepAmM)⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmM)(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" 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="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmM) ∖ {a}⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmM)(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p44" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p46" 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="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(atmDepAmM) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" 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="p32" 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="r8" 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.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r6" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv10/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" 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="p20,p6,p42,p13,p41,p2,p39,p19,p27,p36,p3,p40,p31,p28,p7,p16,p35,p15,p5,p17,p32,p4,p24,p21,p29,p25,p38,p26,p34,p18,p11,p8,p1,p37,p33,p12,p30,p23,p22,p10,p43,p9,p14">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈sentRespDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)⇒a∈dom(atmDepAm)∧atmDepAmB(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ atmDepAmM)⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmM)(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv13/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×CARD))⊆(∅ ⦂ ℙ(ATM×CARD))"/>
<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/inv13/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">
<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="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<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="p4" org.eventb.core.prInfHyps="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<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="p7" org.eventb.core.prInfHyps="p15,p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p15,p16"/>
<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="p1" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<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="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p9,p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p11,p12,p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p28,p29,p30"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p3,p5,p2,p6,p13,p14,p15,p16,p24,p25,p31,p32,p33">
<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.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="am" org.eventb.core.type="ℤ"/>
<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="cardInAtmM" 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="cardInAtmM{a ↦ c}⊆cardInAtm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p18" 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="p11" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtmM{a ↦ cardInAtm(a)}⊆cardInAtm"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" 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="p4" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<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="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/inv13/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" 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="p21,p6,p40,p13,p39,p2,p36,p20,p27,p34,p3,p38,p30,p28,p8,p16,p33,p15,p5,p17,p31,p4,p24,p22,p29,p25,p35,p26,p32,p19,p12,p9,p1,p37,p7,p11,p18,p23,p41,p10,p14">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂ATM·a∈sentReqDep⇒dom(cardInAtmM)⊆dom(cardInAtm)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(cardInAtmB)⊆dom(cardInAtm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM,c⦂CARD·a ↦ c∈cardInAtm∧a∈sentReqDep⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM,c⦂CARD·a0 ↦ c∈cardInAtm∧a0∈sentReqDep ∖ {a}⇒c∈validCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="dom(atmDepAmM)⊆dom(atmDepAm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd3/GRD" 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="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 (cardInAtmB(a)=c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p19">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (atmDepAmB(a)=am)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<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="p22" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p22,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="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p24,p26"/>
</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="p2"/>
</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="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtmB" 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.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmDepAmB(a)∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<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="p28" 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="p19" org.eventb.core.predicate="cardInAtmB(a)∈validCard"/>
<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="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="p4" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p27" 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="p0" org.eventb.core.predicate="c∈validCard"/>
<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="p22" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p29" 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="p26" 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="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<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="p17" 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="p23" org.eventb.core.predicate="a∈sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p25" 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="p18" org.eventb.core.predicate="cardInAtmB(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="p24" 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="depositB/inv13/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48" 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="p22,p9,p48,p13,p47,p5,p42,p21,p30,p40,p6,p46,p35,p31,p10,p17,p39,p14,p8,p18,p36,p7,p26,p23,p33,p28,p41,p29,p38,p19,p12,p11,p1,p45,p25,p24,p32,p4,p27,p44,p15,p43,p34,p16,p3,p2,p20,p37">
<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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM,c⦂CARD·a ↦ c∈cardInAtmB∧a∈recvReqDep⇒c∈validCard"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM,c⦂CARD·a0 ↦ c∈cardInAtmB∧a0∈recvReqDep ∖ {a}⇒c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dom(atmDepAmM)⊆dom(atmDepAm)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv13/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" 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,p7,p44,p12,p42,p3,p39,p17,p26,p35,p4,p41,p30,p27,p8,p14,p34,p13,p6,p15,p31,p5,p22,p19,p28,p24,p38,p25,p33,p16,p10,p9,p1,p37,p32,p11,p29,p21,p20,p36,p43,p40,p23,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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<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="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="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM,c⦂CARD·a0 ↦ c∈{a} ⩤ cardInAtmB⇒c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<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="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)⇒a∈dom(atmDepAm)∧atmDepAmB(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM,c⦂CARD·a ↦ c∈cardInAtmB⇒c∈validCard"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="a∈processedDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inv11/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="ATM,CARD">
<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="p4" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<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.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="p6" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="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="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p17,p19"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p23">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p24">
<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p26"/>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p27">
<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="p27" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p28"/>
<org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p29">
<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="p29" 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.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.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="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p28" org.eventb.core.predicate="a∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p21" 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="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="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</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="p27" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈sentReqDep⇒a∈dom(cardInAtmM)∧cardInAtmM∈ATM ⇸ CARD∧a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈sentReqDep">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(cardInAtmM)∧cardInAtmM∈ATM ⇸ CARD∧a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<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="p23" org.eventb.core.predicate="a∈sentReqDep⇒a∈dom(cardInAtmM)∧cardInAtmM∈ATM ⇸ CARD∧a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD">
<org.eventb.core.prIdent name="a" 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="p3" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p18" 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="p17" 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="p26" org.eventb.core.predicate="a∈dom(cardInAtmM)">
<org.eventb.core.prIdent name="a" 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/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<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="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×ℤ))⇒a∈dom(∅ ⦂ ℙ(ATM×ℤ))∧(∅ ⦂ ℙ(ATM×ℤ))(a)=(∅ ⦂ ℙ(ATM×ℤ))(a)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/inv15/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="a0" 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,p36,p37,p38,p39,p40,p41,p42,p43" org.eventb.core.prSets="ATM,CARD" org.eventb.core.psManual="true">
<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="p9" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<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="p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p47"/>
<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="p13">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p14"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p50">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p53">
<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="p53" org.eventb.core.prHyps="p20,p6,p43,p42,p39,p29,p37,p3,p41,p32,p28,p7,p16,p36,p12,p5,p17,p33,p4,p23,p21,p30,p26,p40,p27,p35,p19,p10,p8,p1,p38,p34,p11,p31,p24,p22,p25,p15,p2,p13,p18,p14,p44,p48,p49,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.prAnte name="1" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funOvr:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p55">
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (a0=a)" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p55">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p58">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p51"/>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p55"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p59">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funImgSimplifies:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p61">
<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="p61" org.eventb.core.prHyps="p20,p6,p43,p42,p39,p29,p37,p3,p41,p32,p28,p7,p16,p36,p12,p5,p17,p33,p4,p23,p21,p30,p26,p40,p27,p35,p19,p10,p8,p1,p38,p34,p11,p31,p24,p22,p25,p15,p2,p13,p18,p14,p44,p48,p49,p51,p59">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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.prPredRef name=".pred" org.eventb.core.prRef="p13"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</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="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="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p52" org.eventb.core.predicate="a0∈dom(atmDepAm{a ↦ am})∧atmDepAmB(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="a0∈dom(atmDepAm{a ↦ am})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="atmDepAmB(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(atmDepAmB)⇒a0∈dom(atmDepAm{a ↦ am})∧atmDepAmB(a0)=(atmDepAm{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="atmDepAmB(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="atmDepAmB(a0)=({a} ⩤ atmDepAm)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB)⇒a0∈dom(atmDepAm{a ↦ am})∧atmDepAmB(a0)=(atmDepAm{a ↦ am})(a0)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="atmDepAmB(a0)=am">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)⇒a∈dom(atmDepAm)∧atmDepAmB(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(atmDepAmB)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36,p37,p38,p39,p40" org.eventb.core.psManual="true">
<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="p12" org.eventb.core.prInfHyps="p41,p42,p43,p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44"/>
<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="p26" org.eventb.core.prInfHyps="p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46"/>
<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="p22" org.eventb.core.prInfHyps="p47,p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p47,p48"/>
<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="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<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="p45">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p41,p44,p42"/>
<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="p48">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p54,p52"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p58">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p59">
<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p27,p10,p59,p11">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funOvr:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p63">
<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="p64" org.eventb.core.prHyps="p56,p3,p41,p5,p6,p9,p11,p43,p57,p15,p16,p17,p59,p25,p42,p28,p30,p31,p33,p34,p52,p40,p1,p2,p4,p47,p7,p44,p8,p63,p46,p10,p55,p14,p13,p18,p21,p20,p19,p54,p23,p24,p27,p29,p45,p32,p53,p35,p36,p37,p38,p39,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p65">
<org.eventb.core.prRule name="org.eventb.core.seqprover.funImgSimplifies:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p67">
<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="p67" org.eventb.core.prHyps="p56,p3,p41,p5,p6,p9,p11,p43,p57,p15,p16,p17,p59,p25,p42,p65,p28,p30,p31,p33,p34,p52,p40,p1,p2,p4,p47,p7,p44,p8,p46,p10,p55,p14,p13,p18,p21,p20,p19,p54,p23,p24,p27,p29,p45,p32,p53,p35,p36,p37,p38,p39,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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.prPredRef name=".pred" org.eventb.core.prRef="p48"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p45"/>
</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="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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p50" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪sentRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ atmDepAmM(a)})⇒a0∈dom(atmDepAm)∧(atmDepAmB{a ↦ atmDepAmM(a)})(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="atmCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="(atmDepAmB{a ↦ atmDepAmM(a)})(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ atmDepAmM(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="atmDepAmB(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<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="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="a0∈dom(atmDepAm)∧(atmDepAmB{a ↦ atmDepAmM(a)})(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sentReqDep∪recvReqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sentRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈atmM"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="({a} ⩤ atmDepAmB)(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sentReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="processedDep∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentReqDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="atmDepAmM(a)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)⇒a∈dom(atmDepAm)∧atmDepAmB(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="reqDep=sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB{a ↦ atmDepAmM(a)})⇒a0∈dom(atmDepAm)∧(atmDepAmB{a ↦ atmDepAmM(a)})(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="respDep=sentRespDep∪recvRespDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv15/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,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" 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,p7,p43,p12,p41,p3,p38,p17,p26,p35,p4,p40,p30,p27,p8,p14,p34,p13,p6,p15,p31,p5,p22,p19,p28,p24,p37,p25,p33,p16,p10,p9,p1,p36,p32,p11,p29,p21,p20,p42,p39,p23,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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<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="∀a0⦂ATM·a0∈dom({a} ⩤ atmDepAmB)⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmB)(a0)=atmDepAm(a0)"/>
<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="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<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="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈atmB"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)⇒a∈dom(atmDepAm)∧atmDepAmB(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="a∈processedDep"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inv15/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,p32,p33,p34,p35,p36" 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="p17,p6,p36,p11,p35,p2,p33,p16,p22,p30,p3,p34,p25,p23,p7,p13,p29,p12,p5,p14,p26,p4,p19,p18,p24,p20,p32,p21,p28,p15,p9,p8,p1,p31,p27,p10">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmB" 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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈atmM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈dom(atmDepAm)⇒atmDepAmB∈ATM ⇸ ℤ∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmB∈atmB ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈atmM ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="sentRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(respDep,sentRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmM∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(reqDep,sentReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈atmB ⇸ atmCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmB∈ℙ(atm)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inv7/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,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,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="⊤ goal" org.eventb.core.prGoal="p15" 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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<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="p14" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒⊤∧⊤"/>
<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="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm∈ATM ⇸ CARD∧cardInAtmB∈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="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="p1" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="sendReqDeposit/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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,p36" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p23" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="p41,p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42"/>
<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="p11" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p51,p52">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p54">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p14,p52"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p60"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p61,p62,p63"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a0=a" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p69" 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.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="p71" org.eventb.core.prHyps="p70">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p14,p52"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p38,p60"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p61,p62,p63"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p19,p7,p35,p26,p36,p34,p17,p24,p9,p2,p5,p25,p27,p3,p18,p20,p33,p16,p32,p8,p31,p29,p12,p6,p22,p21,p28,p30,p15,p1,p13,p14,p37,p38,p39,p40,p41,p42,p43,p51,p52,p70,p56,p57,p58,p60,p61,p62,p63,p64,p65,p66">
<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.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p50" org.eventb.core.predicate="a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM{a ↦ c})⇒cardInAtm(a0)=(cardInAtmM{a ↦ c})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ cardInAtm(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="cardInAtm(a0)=cardInAtm(a)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p65" 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="p62" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmM(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬a∈sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="cardInAtm(a0)=c">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="cardInAtm(a0)=(cardInAtmM{a ↦ c})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM{a ↦ c})⇒cardInAtm(a0)=(cardInAtmM{a ↦ c})(a0)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="a∈dom(cardInAtmM{a ↦ cardInAtm(a)})"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a0∈dom(cardInAtmM{a ↦ c})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="cardInAtm(a)=cardInAtm(a)"/>
<org.eventb.core.prPred name="p49" 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="p27" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="cardInAtm(a0)=({a} ⩤ cardInAtmM)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" 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="r10" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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" 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="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<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="p19" org.eventb.core.prInfHyps="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<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="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<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="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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p50,p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p53,p54"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p14,p7,p33,p22,p34,p31,p13,p20,p9,p2,p5,p21,p23,p3,p15,p16,p28,p12,p29,p8,p27,p26,p11,p6,p18,p17,p24,p32,p25,p30,p1,p35,p36,p37,p38,p39,p40,p50,p51,p53,p54,p55,p56">
<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.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<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="p44" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="a0∈dom(cardInAtmB) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" 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="p54" 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="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(cardInAtm)∧a0∈dom(cardInAtmB) ∖ {a}⇒cardInAtm(a0)=cardInAtmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmB) ∖ {a}⇒cardInAtm(a0)=({a} ⩤ cardInAtmB)(a0)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p45" 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="p48" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmB) ∖ {a}⇒cardInAtm(a0)=cardInAtmB(a0)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p43" 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="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom({a} ⩤ cardInAtmB)⇒cardInAtm(a0)=({a} ⩤ cardInAtmB)(a0)"/>
<org.eventb.core.prPred name="p34" 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="r7" 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.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" 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" 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="p9" org.eventb.core.prInfHyps="p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="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="p19" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<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="p3" org.eventb.core.prInfHyps="p38,p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="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.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p49,p50">
<org.eventb.core.prRule name="r6" 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="p34" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r6" 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="p52" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p52,p53"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p14,p6,p31,p22,p33,p29,p13,p20,p8,p1,p4,p21,p23,p2,p15,p16,p27,p12,p28,p7,p26,p25,p10,p5,p18,p17,p24,p30,p32,p11,p34,p35,p36,p37,p38,p39,p49,p50,p52,p53,p54,p55">
<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.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p54" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM) ∖ {a}⇒cardInAtm(a0)=({a} ⩤ cardInAtmM)(a0)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a0∈dom(cardInAtmM) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM) ∖ {a}⇒cardInAtm(a0)=cardInAtmM(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<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="p43" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" 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="p2" org.eventb.core.predicate="recvReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardInAtm(a0)=cardInAtmM(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="a0∈dom(cardInAtm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom(cardInAtmM) ∖ {a}⇒cardInAtm(a0)=cardInAtmM(a0)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p44" 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="p23" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p46" 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="p36" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(cardInAtm)∧a0∈dom({a} ⩤ cardInAtmM)⇒cardInAtm(a0)=({a} ⩤ cardInAtmM)(a0)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p42" 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="p33" 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="r7" 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.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<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="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</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" 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="atmDepAmM" 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="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="p2" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmM)∧atmDepAmM∈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="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="p15" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<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="⊤∧atmDepAmM∈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="recvRespDeposit/inv13/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">
<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="p6" org.eventb.core.prInfHyps="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<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(reqDep,sendReqDep,recvReqDep))" 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="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<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,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="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p20,p21"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p5,p7,p3,p10,p11,p12,p13,p22,p23">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="p23" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩(sendRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(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="p2" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<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="p4" org.eventb.core.predicate="partition(respDep,sendRespDep,recvRespDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<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="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" 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.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈sendRespDep"/>
<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="p7" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites: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/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="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.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="depositB/grd2/GRD"/>
<org.eventb.core.prProof name="depositB/grd6/GRD"/>
<org.eventb.core.prProof name="depositB/grd7/GRD"/>
<org.eventb.core.prProof name="depositB/grd12/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,p36,p37,p38,p39,p40,p41,p42,p43" 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="p12" org.eventb.core.prInfHyps="p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45"/>
<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="p28" org.eventb.core.prInfHyps="p46,p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p46,p47"/>
<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="p48,p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p48,p49"/>
<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="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p58"/>
<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 atmDepAmB(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqDep=sendReqDep∪recvReqDep" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p44,p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respDep=sendRespDep∪recvRespDep" org.eventb.core.prHyps="p48">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p61,p62"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p22,p9,p42,p31,p43,p40,p20,p29,p11,p4,p7,p30,p15,p32,p5,p21,p23,p38,p18,p39,p10,p37,p35,p13,p8,p27,p26,p33,p19,p36,p1,p25,p41,p14,p3,p2,p24,p34,p16,p17,p44,p45,p46,p47,p48,p49,p58,p59,p61,p62,p63,p64">
<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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" 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="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="sendRespDep∩recvRespDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(reqDep,sendReqDep,recvReqDep)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmM)⇒cardInAtm(a)=cardInAtmM(a)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p64" 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="p62" org.eventb.core.predicate="(sendReqDep∪recvReqDep)∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" 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="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="trans=sendReqDep∪recvReqDep∪respDep"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="respDep=sendRespDep∪recvRespDep"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sendRespDep∈ℙ(respDep)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendReqDep∩recvReqDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmB)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtmM)⇒a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p55" 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="p32" org.eventb.core.predicate="sendReqDep∈ℙ(reqDep)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="reqDep=sendReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmM⊆cardInAtm"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂ATM·a∈dom(cardInAtm)∧a∈dom(cardInAtmB)⇒cardInAtm(a)=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p43" 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="depositATM/grd5/WD"/>
<org.eventb.core.prProof name="depositATM/grd10/WD"/>
<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="depositATM/accBalOnAtmA/EQL"/>
<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="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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmB)∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<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="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="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="p14" org.eventb.core.predicate="⊤∧atmDepAmB∈ATM ⇸ ℤ"/>
<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="p2" org.eventb.core.predicate="atmDepAmB∈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/accBalOnAtm/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="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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p20,p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAmB(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p24"/>
<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="p27" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p27,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="p9" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p29,p31"/>
</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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmDepAmB" 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="cardInAtmB" 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="p22" 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="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<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="p33" 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="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="p14" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtmB(a)∈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="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="p25" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="accBalOnAtm{acc ↦ bal(acc)+am}=accBalOnAtm"/>
<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="p26" org.eventb.core.predicate="accBalOnAtm{acc ↦ bal(acc)+atmDepAmB(a)}=accBalOnAtm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p32" 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="p20" 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="p27" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="(sentReqDep∪recvReqDep)∩(sentRespDep∪recvRespDep)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB(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="p31" 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="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="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="p28" org.eventb.core.predicate="a∈sentReqDep∪recvReqDep"/>
<org.eventb.core.prPred name="p30" 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="p24" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p29" 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/reqDep/EQL"/>
<org.eventb.core.prProof name="depositB/reqDep/EQL"/>
<org.eventb.core.prProof name="sendRespDeposit/respDep/EQL"/>
<org.eventb.core.prProof name="depositB/recvReqDep/EQL"/>
<org.eventb.core.prProof name="sendRespDeposit/grd2/GRD"/>
<org.eventb.core.prProof name="sendRespDeposit/act4/SIM"/>
</org.eventb.core.prFile>
