<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/inv2/INV"/>
<org.eventb.core.prProof name="INITIALISATION/inv1/INV"/>
<org.eventb.core.prProof name="validateCard/inv2/INV"/>
<org.eventb.core.prProof name="validateCard/inv1/INV"/>
<org.eventb.core.prProof name="ejectCard/inv2/INV"/>
<org.eventb.core.prProof name="ejectCard/inv1/INV"/>
<org.eventb.core.prProof name="requestDeposit/inv1/INV"/>
<org.eventb.core.prProof name="responseDeposit/inv2/INV"/>
<org.eventb.core.prProof name="responseDeposit/inv1/INV"/>
<org.eventb.core.prProof name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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/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="(∅ ⦂ ℙ(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/inv8/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/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="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∩(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" 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.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="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 × {0}∈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/inv11/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="ACCOUNT">
<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="(∅ ⦂ ℙ(ACCOUNT×ℤ))∈ACCOUNT ⇸ ℕ"/>
<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="reqDeposit/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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="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="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="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="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="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="reqDeposit/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" 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="p23,p24,p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p17,p16"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p27"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p2,p5,p18,p8,p21,p14,p19,p10,p4,p7,p20,p11,p3,p6,p12,p17,p1,p15,p22,p16,p23,p24,p25,p26,p27,p33,p34,p35,p36">
<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.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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p27" 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="p15" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqDep∪processedDep∪respDep∪{a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqDep∪processedDep∪respDep∈ℙ(atm)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trans∪{a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<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="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="reqDeposit/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" 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="p7" org.eventb.core.prInfHyps="p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21"/>
<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="p22"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
<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="p16" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p5,p22"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p2,p6,p17,p11,p19,p15,p18,p5,p8,p3,p4,p9,p12,p16,p1,p13,p14,p20,p21,p22,p29,p30,p31,p32">
<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.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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.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="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqDep∪{a}∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="reqDep∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" 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="p32" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p16" 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="p33" org.eventb.core.predicate="reqDep∪{a}∈ℙ(reqDep∪respDep∪{a})"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" 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="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p19" 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="reqDeposit/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" 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="p7" org.eventb.core.prInfHyps="p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21"/>
<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="p22"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
<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="p16" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,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="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<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="p2,p6,p17,p11,p19,p15,p18,p5,p8,p3,p4,p9,p12,p16,p1,p13,p14,p20,p21,p22,p29,p30,p31">
<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.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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.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="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAm{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" 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="p31" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p16" 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="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" 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="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p19" 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="reqDeposit/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" 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="p7" org.eventb.core.prInfHyps="p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p23"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p30"/>
<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="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p2,p6,p17,p11,p18,p15,p19,p5,p8,p3,p4,p9,p12,p16,p1,p13,p14,p20,p21,p23,p31,p32,p33">
<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="p35">
<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="p23"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p30"/>
<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="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,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="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p2,p6,p17,p11,p18,p15,p19,p5,p8,p3,p4,p9,p12,p16,p1,p13,p14,p20,p21,p23,p31,p32,p33">
<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.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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.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="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∪{a}=reqDep∪{a}∪respDep"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(reqDep∪{a})∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans∪{a},reqDep∪{a},respDep)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqDep∪respDep∪{a}=reqDep∪{a}∪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="p33" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" 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="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∪{a}=(reqDep∪{a})∪respDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" 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="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" 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,p30,p9,p29,p3,p27,p18,p21,p26,p4,p28,p24,p22,p8,p15,p25,p10,p5,p16,p2,p20,p6,p1,p11,p17,p13,p23,p14,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="AccBalOnAtmA" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈atmCard"/>
<org.eventb.core.prPred name="p5" 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="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" 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="p8" org.eventb.core.prInfHyps="p26,p27,p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27,p28,p29"/>
<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="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p17,p6,p24,p21,p25,p23,p16,p19,p7,p13,p3,p5,p20,p14,p22,p10,p1,p18,p2,p9,p15,p11,p4,p12,p26,p27,p28,p29,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqDep∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqDep ∖ {a}∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqDep ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/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" 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="p8" org.eventb.core.prInfHyps="p26,p27,p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27,p28,p29"/>
<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="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p40"/>
<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="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p17,p6,p24,p21,p25,p23,p16,p19,p7,p13,p3,p5,p20,p14,p22,p10,p1,p18,p2,p9,p15,p11,p4,p12,p26,p27,p28,p29,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="p41" org.eventb.core.predicate="processedDep∪{a}∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="processedDep∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="processedDep∪{a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/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" 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="p8" org.eventb.core.prInfHyps="p26,p27,p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27,p28,p29"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<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="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p17,p6,p24,p21,p25,p23,p16,p19,p7,p13,p3,p5,p20,p14,p22,p10,p1,p18,p2,p9,p15,p11,p4,p12,p26,p27,p28,p29,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="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="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p14,p18,p2,p9,p15,p11,p4,p26,p27,p28,p29,p39,p40,p41">
<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.prAnte name=")" org.eventb.core.prGoal="p44">
<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="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p17,p6,p24,p21,p25,p23,p16,p19,p7,p13,p3,p5,p20,p14,p22,p10,p1,p18,p2,p9,p15,p11,p4,p12,p26,p27,p28,p29,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p45">
<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="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p17,p6,p24,p21,p25,p23,p16,p19,p7,p13,p3,p5,p20,p14,p22,p10,p1,p18,p2,p9,p15,p11,p4,p12,p26,p27,p28,p29,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="p30" org.eventb.core.predicate="trans=(reqDep ∖ {a})∪(processedDep∪{a})∪respDep"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(processedDep∪{a})∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqDep ∖ {a},processedDep∪{a},respDep)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans=(reqDep ∖ {a})∪processedDep∪{a}∪respDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqDep∪processedDep∪respDep=(reqDep ∖ {a})∪processedDep∪{a}∪respDep"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(reqDep ∖ {a})∩(processedDep∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(reqDep ∖ {a})∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" 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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r5" 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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="respDeposit/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" 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,p9,p27,p12,p26,p4,p23,p16,p20,p22,p7,p11,p6,p25,p13,p5,p24,p18,p21,p10,p1,p8,p15,p3,p19,p14,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="AccBalOnAtmA" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="activeAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="idleAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="activeAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂ATM·a∈atm∧a∈trans⇒a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idleAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="trans∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<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="processedDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respDep∈ℙ(activeAtm)"/>
<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="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="respDeposit/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" 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="p6" org.eventb.core.prInfHyps="p16,p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p16,p17"/>
<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="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="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p1,p5,p11,p9,p15,p10,p14,p4,p7,p2,p3,p8,p12,p13,p16,p17,p24">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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 name="p24" org.eventb.core.predicate="respDep∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respDep∪{a}∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respDep∪{a}∈ℙ(trans)"/>
<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="p4" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" 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="p15" 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="respDeposit/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" 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="p9" org.eventb.core.prInfHyps="p16,p17,p18,p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p16,p17,p18,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.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p5,p12,p8,p15,p10,p14,p4,p6,p13,p2,p3,p7,p11,p16,p17,p18,p19,p25">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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 name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="processedDep ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="processedDep ∖ {a}∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="processedDep∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈processedDep"/>
<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="p15" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="r3" 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.prProof>
<org.eventb.core.prProof name="respDeposit/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" 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="p6" org.eventb.core.prInfHyps="p16,p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p16,p17"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<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="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.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p5,p13,p9,p15,p10,p14,p4,p7,p2,p3,p8,p11,p12,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27">
<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="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.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p11,p12,p16,p17">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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 name="p18" org.eventb.core.predicate="trans=(reqDep ∖ {a})∪(respDep∪{a})"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trans=(reqDep ∖ {a})∪respDep∪{a}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∪respDep=(reqDep ∖ {a})∪respDep∪{a}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqDep ∖ {a},respDep∪{a})"/>
<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="p4" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(reqDep ∖ {a})∩(respDep∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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="p15" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="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="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="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="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="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="depositATM/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" 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,p11,p34,p14,p33,p5,p30,p21,p26,p29,p8,p13,p7,p32,p16,p6,p31,p23,p28,p12,p1,p10,p19,p4,p24,p9,p2,p15,p20,p18,p27,p25,p3,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="AccBalOnAtmA" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="activeAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="idleAtm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="a∈respDep"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="activeAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈atmCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂ATM·a∈atm∧a∈trans⇒a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idleAtm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="AccBalOnAtmA∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="processedDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈activeAtm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respDep∈ℙ(activeAtm)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26,p27,p28,p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27,p28,p29"/>
<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="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p16,p6,p24,p20,p25,p23,p14,p21,p18,p7,p13,p22,p5,p19,p17,p2,p9,p15,p10,p1,p3,p11,p4,p12,p26,p27,p28,p29,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="atm" 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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="a∈respDep"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmDepAm(a)∈ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trans ∖ {a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" 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="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqDep∪processedDep∪respDep∈ℙ(atm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(reqDep∪processedDep∪respDep) ∖ {a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<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="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p18,p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,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.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1,p7,p15,p11,p17,p13,p16,p6,p9,p2,p5,p10,p3,p12,p4,p14,p18,p19,p26">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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 name="p26" org.eventb.core.predicate="respDep∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respDep ∖ {a}∈ℙ((reqDep∪respDep) ∖ {a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD">
<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∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" 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="p0" org.eventb.core.predicate="respDep ∖ {a}∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p18,p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<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="p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1,p7,p15,p11,p16,p13,p17,p6,p9,p2,p5,p10,p3,p12,p4,p14,p18,p19">
<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="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p1,p7,p15,p11,p16,p13,p17,p6,p9,p2,p5,p10,p3,p12,p4,p14,p18,p19">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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 name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans ∖ {a},reqDep,respDep ∖ {a})"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans ∖ {a}=reqDep∪(respDep ∖ {a})"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(reqDep∪respDep) ∖ {a}=reqDep∪(respDep ∖ {a})"/>
<org.eventb.core.prPred name="p24" 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="p6" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩(respDep ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p22" 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="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/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" 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="p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21"/>
<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="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p1,p7,p17,p13,p19,p15,p18,p6,p10,p2,p5,p11,p3,p14,p4,p16,p12,p8,p20,p21">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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 name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCashA{a ↦ atmCashA(a)+am}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p25" 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="p6" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmCashA{a ↦ atmCashA(a)+atmDepAm(a)}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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="p19" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he: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/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" 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="p9" org.eventb.core.prInfHyps="p28,p29,p30,p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p12,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p18,p6,p26,p22,p27,p25,p15,p23,p20,p7,p14,p24,p4,p21,p19,p2,p10,p17,p12,p1,p3,p11,p5,p13,p8,p16,p28,p29,p30,p31,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="atm" 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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="a∈respDep"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="atmDepAm(a)∈ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="acc∈dom(accBalOnAtm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="accBalOnAtm{acc ↦ accBalOnAtm(acc)+am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<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="p28" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="trans∈ℙ(atm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="accBalOnAtm{acc ↦ accBalOnAtm(acc)+atmDepAm(a)}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</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" 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="p2" org.eventb.core.prInfHyps="p3,p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4"/>
<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="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
<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="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" 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.prAnte name="(" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p14" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p7" 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="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="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" 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="p2" org.eventb.core.predicate="partition(trans,reqDep,respDep)">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trans=reqDep∪respDep">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p10" 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="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" 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="p6" 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.totalDom:2"/>
<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.trueGoal"/>
<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.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/act3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,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="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,p33,p12,p32,p4,p30,p21,p24,p29,p5,p31,p27,p25,p10,p18,p28,p13,p7,p19,p3,p23,p8,p1,p14,p20,p16,p26,p2,p15,p6,p17,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="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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∈respDep"/>
<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="p5" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈atmCard"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAm(a)=am"/>
<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="acc∈dom(AccBalOnAtmA)"/>
<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="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<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="cardInAtm∈ATM ⇸ CARD"/>
<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="p0" org.eventb.core.predicate="acc∈dom(AccBalOnAtmA)∧AccBalOnAtmA∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p27" 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="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/grd10/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,processedDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<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="p8" org.eventb.core.predicate="⊤∧atmDepAm∈ATM ⇸ ℤ"/>
<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="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAm∈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.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="reqDeposit/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" 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="p7" org.eventb.core.prInfHyps="p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21"/>
<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="p22"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
<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="p16" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p8,p22"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p2,p6,p17,p11,p19,p15,p18,p5,p8,p3,p4,p9,p12,p16,p1,p13,p14,p20,p21,p22,p29,p30,p31,p32">
<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.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respDep∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" 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="p32" org.eventb.core.predicate="¬a∈reqDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respDep∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p16" 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="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" 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="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="respDep∈ℙ(reqDep∪respDep∪{a})"/>
<org.eventb.core.prPred name="p19" 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="reqDeposit/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" 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="p11" org.eventb.core.prInfHyps="p21,p22,p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<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="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p17,p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p1,p6,p18,p10,p20,p15,p19,p5,p8,p17,p3,p4,p7,p12,p16,p2,p13,p14,p21,p22,p23,p24,p25,p31,p32,p33,p34">
<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.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬a∈reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="processedDep∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p11" 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="p16" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="processedDep∈ℙ(reqDep∪processedDep∪respDep∪{a})"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="processedDep∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq: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="r5" 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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p18,p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,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.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1,p7,p15,p11,p17,p13,p16,p6,p9,p2,p5,p10,p3,p12,p4,p14,p18,p19,p26">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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 name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqDep∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqDep∈ℙ((reqDep∪respDep) ∖ {a})"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD">
<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∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" 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="p13" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/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" 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="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪processedDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p2,p10,p20,p13,p22,p18,p23,p9,p12,p21,p4,p7,p11,p6,p3,p15,p16,p1,p5,p17,p8,p19,p24,p25,p26,p27,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="p3" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈respDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmDepAm(a)∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<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="c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ((reqDep∪processedDep∪respDep) ∖ {a})"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="processedDep∈ℙ(reqDep∪processedDep∪respDep)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="processedDep∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.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="p8" org.eventb.core.predicate="⊤∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="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="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="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="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="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.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/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,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"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5"/>
<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="p6">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p7" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪respDep">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqDep,respDep)">
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<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="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="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="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<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.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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p1" org.eventb.core.predicate="a∈dom(atmCash)"/>
<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="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<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="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.prPred name="p8" 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.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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<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="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="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="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act4/SIM"/>
<org.eventb.core.prProof name="INITIALISATION/act2/SIM"/>
<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="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="p9">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<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="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="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="p11" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" 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.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.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1">
<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="p3,p4,p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6"/>
<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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p0">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<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.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="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="acc" 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="p16" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="acc" 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="p9" 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="p18" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p11" 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="p10" 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="atmDepAm(a)=am"/>
<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="p12" org.eventb.core.predicate="acc∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" 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="p4" 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="p3" 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="p14" 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="p17" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p2" 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="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p13" 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="p6" 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="p8" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he: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="depositB/grd3/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<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="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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p14,p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p18"/>
</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="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="acc" 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="p17" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="acc" 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="p10" 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="p20" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p12" 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="p18" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p11" 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="p2" org.eventb.core.predicate="atmDepAm(a)=am"/>
<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="p13" org.eventb.core.predicate="acc∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" 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="p19" org.eventb.core.predicate="atmDepAm(a)∈ℕ"/>
<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="p15" 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="p0" org.eventb.core.predicate="am∈ℕ1"/>
<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="p1" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p14" 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.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="p9" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he: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="depositB/grd5/GRD"/>
<org.eventb.core.prProof name="depositB/grd6/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" 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="p7" org.eventb.core.prInfHyps="p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p9,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<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,p5,p25,p20,p26,p24,p12,p19,p21,p18,p6,p13,p22,p3,p17,p23,p9,p2,p8,p15,p1,p14,p10,p4,p11,p27,p28,p29,p30,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="accBalOnAtmA" 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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="p39" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="accBalOnAtmA∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<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="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/grd7/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" 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="p7" org.eventb.core.prInfHyps="p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p9,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<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,p5,p25,p20,p26,p24,p12,p19,p21,p18,p6,p13,p22,p3,p17,p23,p9,p2,p8,p15,p1,p14,p10,p4,p11,p27,p28,p29,p30,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="accBalOnAtmA" 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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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.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="p39" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqDep∩processedDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqDep,processedDep,respDep)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="processedDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="accBalOnAtmA∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep"/>
<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="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<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="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/act1/SIM"/>
<org.eventb.core.prProof name="INITIALISATION/act8/SIM"/>
<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">
<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="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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p14,p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p18"/>
</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="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="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p16" 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="p17" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct">
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" 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="p20" org.eventb.core.predicate="accBalOnAtm{acc ↦ bal(acc)+atmDepAm(a)}=accBalOnAtm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p12" 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="p11" 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="p2" org.eventb.core.predicate="atmDepAm(a)=am"/>
<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="p13" 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="p8" 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="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="p15" 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="p0" org.eventb.core.predicate="accBalOnAtm{acc ↦ bal(acc)+am}=accBalOnAtm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am∈ℕ1"/>
<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="p1" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p14" 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.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="p9" 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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he: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="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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trans=reqDep∪processedDep∪respDep">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<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="p8" org.eventb.core.predicate="⊤∧atmDepAm∈ATM ⇸ ℤ"/>
<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="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="processedDep∩respDep=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAm∈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.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/act6/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="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="p8">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" 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.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(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="p0" org.eventb.core.predicate="acc∈dom(accBalOnAtm)∧accBalOnAtm∈ACCOUNT ⇸ ℤ"/>
<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="p1" org.eventb.core.predicate="acc∈dom(accBalOnAtm)"/>
<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="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="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤∧accBalOnAtm∈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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act6/SIM"/>
<org.eventb.core.prProof name="respDeposit/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" 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="p6" org.eventb.core.prInfHyps="p15,p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<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.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqDep∪respDep" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1,p5,p11,p9,p14,p10,p13,p4,p7,p2,p3,p8,p12,p15,p16,p23">
<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.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="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 name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqDep∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqDep ∖ {a}∈ℙ(reqDep∪respDep)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p20" 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="p4" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqDep ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" 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="p14" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqDep,respDep))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p2,p9,p20,p13,p23,p18,p24,p8,p12,p5,p7,p10,p16,p22,p14,p1,p4,p3,p15,p21,p17,p6,p19,p25,p26,p35,p37">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="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.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="p3" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmDepAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqDep∩respDep=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans=reqDep∪respDep"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqDep,respDep)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm(a)=c"/>
<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="c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈reqDep"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqDep∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he: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/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="∀c⦂CARD·c∈ran(∅ ⦂ ℙ(ATM×CARD))⇒c∈(∅ ⦂ ℙ(CARD))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
