<?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.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))⊆(∅ ⦂ ℙ(ATM))"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="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="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))⊆(∅ ⦂ ℙ(ATM))"/>
</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="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="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))⊆(∅ ⦂ ℙ(ATM))"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="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="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))⊆(∅ ⦂ ℙ(ATM))"/>
</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="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="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))⊆(∅ ⦂ ℙ(ATM))"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="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="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))⊆(∅ ⦂ ℙ(ATM))"/>
</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="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reqWithdraw/inv7/INV"/>
<org.eventb.core.prProof name="respWDok/inv7/INV"/>
<org.eventb.core.prProof name="respWDfail/inv7/INV"/>
<org.eventb.core.prProof name="INITIALISATION/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="respWDok/inv8/INV"/>
<org.eventb.core.prProof name="respWDfail/inv9/INV"/>
<org.eventb.core.prProof name="withdrawOKAtm/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" 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,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p21,p22,p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p24,p49,p50"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p51,p52,p53"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p9,p19,p15,p6,p3,p1,p16,p7,p11,p20,p13,p8,p12,p2,p5,p4,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p49,p50,p51,p52,p53,p54,p56,p57,p58">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p59">
<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.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p24,p49,p50"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p51,p52,p53"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p9,p19,p15,p6,p3,p1,p16,p7,p11,p20,p13,p8,p12,p2,p5,p4,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p49,p50,p51,p52,p53,p54,p56,p57,p58">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am≤atmCashA(a)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok ∖ {a},sendRespWDOk,recvRespWDOk ∖ {a})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="sendRespWDOk∩(recvRespWDOk ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respWDok ∖ {a}=sendRespWDOk∪(recvRespWDOk ∖ {a})"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk) ∖ {a}=sendRespWDOk∪(recvRespWDOk ∖ {a})"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈recvRespWDOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFailsAtm/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" 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,reqWD,respWDok,respWDfail))" 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="p17,p18,p19,p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p17,p18,p19,p20"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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.prHypAction name="HIDE7" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p18,p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p20,p45,p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p6,p15,p11,p4,p3,p1,p12,p5,p8,p16,p9,p2,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p45,p46,p47,p48,p49,p50,p51,p52,p53">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p55">
<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.prHypAction name="HIDE7" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p18,p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p20,p45,p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p6,p15,p11,p4,p3,p1,p12,p5,p8,p16,p9,p2,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p45,p46,p47,p48,p49,p50,p51,p52,p53">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvRespWDFail"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respWDfail ∖ {a}=sendRespWDFail∪(recvRespWDFail ∖ {a})"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDfail ∖ {a},sendRespWDFail,recvRespWDFail ∖ {a})"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="sendRespWDFail∩(recvRespWDFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendRespWDFail∪recvRespWDFail) ∖ {a}=sendRespWDFail∪(recvRespWDFail ∖ {a})"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reqWithdraw/act1/SIM"/>
<org.eventb.core.prProof name="SendReqWithdraw/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,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="p28,p2,p33,p30,p7,p26,p22,p8,p13,p34,p10,p17,p3,p15,p21,p31,p27,p32,p29,p9,p20,p18,p4,p6,p35,p19,p1,p5,p12,p24,p11,p14,p16,p23,p25">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sentReqWD∪{a}⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∉recvReqWD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∉sentReqWD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqWithdraw/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p23,p24,p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p31,p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p31,p32"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p34"/>
<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="p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqWD∪respWDok∪respWDfail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p23,p55,p25,p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p56,p24,p59,p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p61,p62,p58,p64"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p8,p21,p17,p4,p3,p1,p18,p6,p11,p22,p14,p12,p16,p13,p2,p7,p5,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p34,p55,p56,p57,p58,p59,p61,p62,p63,p64,p65,p66,p67,p68">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p69">
<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="p34"/>
<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="p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqWD∪respWDok∪respWDfail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p23,p55,p25,p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p56,p24,p59,p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p61,p62,p58,p64"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p8,p21,p17,p4,p3,p1,p18,p6,p11,p22,p14,p12,p16,p13,p2,p7,p5,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p34,p55,p56,p57,p58,p59,p61,p62,p63,p64,p65,p66,p67,p68">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqWD∪{a}=sendReqWD∪{a}∪recvReqWD"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬a∈sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬a∈reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="(sendReqWD∪{a})∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqWD∪{a},sendReqWD∪{a},recvReqWD)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am≤atmCashA(a)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="acc∈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="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬a∈sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="sendReqWD∪recvReqWD∪{a}=sendReqWD∪{a}∪recvReqWD"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqWD∪{a}=(sendReqWD∪{a})∪recvReqWD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬a∈sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" 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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqWithdraw/act1/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewritesL1:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (reqWD=sentReqWD∪recvReqWD)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqWD=reqWD∪{a}"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉recvReqWD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬a∈sentReqWD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" 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="p12" org.eventb.core.predicate="a∉sentReqWD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentReqWD∪recvReqWD=sentReqWD∪recvReqWD∪{a}"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardAccount∈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="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬a∈recvReqWD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/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">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmWDAm)∧atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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="withdrawOK/grd11/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,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" 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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmWDAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmWDAcc)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmWDAcc)∧atmWDAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/grd13/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" org.eventb.core.prSets="ACCOUNT,ATM,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="p33,p2,p41,p38,p8,p31,p27,p10,p15,p42,p12,p19,p3,p18,p26,p39,p32,p40,p36,p11,p22,p20,p5,p7,p44,p21,p1,p6,p14,p29,p25,p35,p34,p17,p43,p28,p37,p24,p16,p23,p13,p9,p4,p30">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="acc=atmWDAcc(a)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmWDAcc)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈dom(activeCard)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="bal(acc)≥am"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(activeCard)∧activeCard∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="atmCash(a)≥am"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/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,p27,p28,p29,p30" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p35,p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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="p37,p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p39,p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p25,p21,p30"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p35">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p31,p32,p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p34,p65,p66"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p67,p69,p70"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p18,p29,p27,p16,p3,p13,p6,p17,p24,p12,p5,p25,p10,p21,p20,p30,p15,p23,p7,p4,p11,p2,p8,p1,p14,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p61,p62,p63,p64,p65,p66,p67,p69,p70,p71,p72,p73,p74">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<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="p57" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="a∈sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬a∈withdrawOk"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="atmCash(a)≥atmWDAm(a)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="bal(acc)≥atmWDAm(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqWD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash(a)≥am"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∉withdrawOk"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="bal(acc)≥am"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p29" 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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDok/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" 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,reqWD,respWDok,respWDfail))" 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="p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p46,p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p48,p50,p51"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p6,p16,p12,p4,p3,p1,p13,p5,p9,p17,p10,p7,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p46,p47,p48,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p46,p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p48,p50,p51"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p6,p16,p12,p4,p3,p1,p13,p5,p9,p17,p10,p7,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p46,p47,p48,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqWD∪recvReqWD) ∖ {a}=sendReqWD∪(recvReqWD ∖ {a})"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqWD ∖ {a},sendReqWD,recvReqWD ∖ {a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="sendReqWD∩(recvReqWD ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqWD ∖ {a}=sendReqWD∪(recvReqWD ∖ {a})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈withdrawOk"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDok/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" 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,reqWD,respWDok,respWDfail))" 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="p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p50,p51"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p6,p17,p12,p4,p3,p1,p13,p5,p9,p16,p10,p7,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p47,p48,p49,p50,p51,p52,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p50,p51"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p6,p17,p12,p4,p3,p1,p13,p5,p9,p16,p10,p7,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p47,p48,p49,p50,p51,p52,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respWDok∪{a}=(sendRespWDOk∪{a})∪recvRespWDOk"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendRespWDOk∪{a})∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok∪{a},sendRespWDOk∪{a},recvRespWDOk)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respWDok∪{a}=sendRespWDOk∪{a}∪recvRespWDOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="sendRespWDOk∪recvRespWDOk∪{a}=sendRespWDOk∪{a}∪recvRespWDOk"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈withdrawOk"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" 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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDfail/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" 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,reqWD,respWDok,respWDfail))" 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="p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p46,p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p48,p50,p51"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p7,p16,p12,p5,p4,p1,p13,p6,p9,p17,p10,p3,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p46,p47,p48,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p46,p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p48,p50,p51"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p7,p16,p12,p5,p4,p1,p13,p6,p9,p17,p10,p3,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p46,p47,p48,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqWD∪recvReqWD) ∖ {a}=sendReqWD∪(recvReqWD ∖ {a})"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈withdrawFail"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqWD ∖ {a},sendReqWD,recvReqWD ∖ {a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="sendReqWD∩(recvReqWD ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqWD ∖ {a}=sendReqWD∪(recvReqWD ∖ {a})"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDfail/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,reqWD,respWDok,respWDfail))" 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="p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p50,p51"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p7,p17,p12,p5,p4,p1,p13,p6,p9,p16,p10,p3,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p47,p48,p49,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p50,p51"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p7,p17,p12,p5,p4,p1,p13,p6,p9,p16,p10,p3,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p47,p48,p49,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respWDfail∪{a}=(sendRespWDFail∪{a})∪recvRespWDFail"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="sendRespWDFail∪recvRespWDFail∪{a}=sendRespWDFail∪{a}∪recvRespWDFail"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈withdrawFail"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respWDfail∪{a}=sendRespWDFail∪{a}∪recvRespWDFail"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDfail∪{a},sendRespWDFail∪{a},recvRespWDFail)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendRespWDFail∪{a})∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" 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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespWDOk/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p7,p20,p18,p8,p11,p28,p10,p13,p3,p12,p17,p25,p21,p26,p23,p9,p16,p14,p4,p6,p29,p15,p1,p5,p19">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sentRespWDOk ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentRespWDOk"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespWDOk/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p7,p20,p18,p8,p11,p28,p10,p13,p3,p12,p17,p25,p21,p26,p23,p9,p16,p14,p4,p6,p29,p15,p1,p5,p19">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈sentRespWDOk"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespWDOk∪{a}⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespWDOk/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.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,senDReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p15,p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p15,p16"/>
<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="p17">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<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="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p35"/>
<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="p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p35"/>
<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="p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok,sendRespWDOk ∖ {a},recvRespWDOk∪{a})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(reqWD,senDReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" 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="p8" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respWDok=(sendRespWDOk ∖ {a})∪recvRespWDOk∪{a}"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sentRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="senDReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=reqWD∪respWDok∪sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="reqWD" 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(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" 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="p39" org.eventb.core.predicate="reqWD∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqWD=senDReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="senDReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" 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="p41" org.eventb.core.predicate="(sendRespWDOk ∖ {a})∩(recvRespWDOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈sendRespWDOk"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="respWDok=(sendRespWDOk ∖ {a})∪(recvRespWDOk∪{a})"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="reqWD" 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="p27" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" 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="p38" org.eventb.core.predicate="respWDok∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" 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="p14" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespWDFail/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p8,p20,p19,p9,p12,p28,p11,p14,p3,p13,p18,p25,p21,p26,p23,p10,p17,p15,p4,p6,p29,p16,p1,p5,p7">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sentRespWDFail"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sentRespWDFail ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespWDFail/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p8,p20,p19,p9,p12,p28,p11,p14,p3,p13,p18,p25,p21,p26,p23,p10,p17,p15,p4,p6,p29,p16,p1,p5,p7">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sentRespWDFail"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespWDFail∪{a}⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespWDFail/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,senDReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<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 hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p5,p18,p13,p3,p2,p1,p14,p4,p8,p17,p10,p15,p9,p12,p6,p16,p7,p25,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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p7,p25,p26">
<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.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendRespWDFail ∖ {a})∩(recvRespWDFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendRespWDFail∪recvRespWDFail=(sendRespWDFail ∖ {a})∪recvRespWDFail∪{a}"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail ∖ {a},recvRespWDFail∪{a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqWD,senDReqWD,recvReqWD)">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respWDfail=(sendRespWDFail ∖ {a})∪recvRespWDFail∪{a}"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sentRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="senDReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respWDfail=(sendRespWDFail ∖ {a})∪(recvRespWDFail∪{a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD=senDReqWD∪recvReqWD">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="senDReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sendRespWDFail"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqWD/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p7,p19,p18,p8,p11,p28,p10,p13,p3,p12,p17,p25,p21,p26,p23,p9,p16,p14,p4,p6,p29,p15,p1,p5,p20">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sentReqWD ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈sentReqWD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqWD/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p7,p19,p18,p8,p11,p28,p10,p13,p3,p12,p17,p25,p21,p26,p23,p9,p16,p14,p4,p6,p29,p15,p1,p5,p20">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqWD∪{a}⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈sentReqWD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqWD/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" 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="p17,p18,p19,p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p17,p18,p19,p20"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,senDReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<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="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p18,p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p19,p50"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p54,p55"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p54,p55"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p48,p51,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p6,p16,p11,p4,p3,p1,p12,p5,p8,p15,p9,p2,p17,p18,p19,p20,p24,p25,p26,p27,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.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="p60">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<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="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p18,p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p19,p50"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p17,p18,p19,p20,p49,p50"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqWD=(sendReqWD ∖ {a})∪(recvReqWD∪{a})"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqWD,sendReqWD ∖ {a},recvReqWD∪{a})"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="reqWD∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=reqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqWD=(sendReqWD ∖ {a})∪recvReqWD∪{a}"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="reqWD∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=senDReqWD∪recvReqWD">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="senDReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="(sendReqWD ∖ {a})∩(recvReqWD∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈sendReqWD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(reqWD,senDReqWD,recvReqWD)">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="senDReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="senDReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="trans=reqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="sendReqWD∪recvReqWD=(sendReqWD ∖ {a})∪recvReqWD∪{a}"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqWithdraw/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,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37"/>
<org.eventb.core.prRule name="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="p28,p1,p33,p30,p7,p26,p22,p9,p13,p34,p10,p17,p3,p15,p21,p32,p27,p31,p29,p8,p20,p18,p4,p5,p35,p2,p6,p11,p24,p12,p14,p16,p23,p25,p36,p37">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∉recvReqWD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∉sentReqWD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∉reqWD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/grd15/GRD"/>
<org.eventb.core.prProof name="withdrawOK/act3/SIM"/>
<org.eventb.core.prProof name="SendRespWDok/grd1/GRD"/>
<org.eventb.core.prProof name="SendRespWDok/act3/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="withdrawOk ∖ {a}=withdrawOk ∖ {a}"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬a∈recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬a∈sentRespWDOk">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∉sentRespWDOk">
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="withdrawFail/act4/SIM"/>
<org.eventb.core.prProof name="SendRespWDfail/grd1/GRD"/>
<org.eventb.core.prProof name="SendRespWDfail/act3/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉sentRespWDFail">
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="withdrawFail ∖ {a}=withdrawFail ∖ {a}"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬a∈sentRespWDFail">
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬a∈recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∉recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="INITIALISATION/act12/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))=(∅ ⦂ ℙ(ATM×ℤ))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act13/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ACCOUNT))=(∅ ⦂ ℙ(ATM×ACCOUNT))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act14/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ATM">
<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 × {0}=ATM × {0}"/>
<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="SendReqWithdraw/act2/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.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="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmWDAm{a ↦ am}=atmWDAm{a ↦ am}"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉trans">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬a∈trans">
<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="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="SendRespWDok/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" 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,reqWD,respWDok,respWDfail))" 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="p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p45,p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p49,p50"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p6,p17,p12,p4,p3,p1,p13,p5,p9,p16,p10,p7,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p45,p46,p47,p49,p50,p51,p52,p53,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a∈sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqWD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈withdrawOk"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,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="p26,p2,p32,p29,p7,p24,p22,p8,p12,p33,p10,p15,p3,p14,p21,p30,p25,p31,p28,p9,p18,p16,p4,p6,p35,p17,p1,p5,p11,p23,p20,p34,p27,p13,p19">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmWDAm)∧atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal(acc)&lt;am"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd11/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(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmWDAm)∧atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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="withdrawFail/grd13/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,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" 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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmWDAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmWDAcc)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmWDAcc)∧atmWDAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/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,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p48,p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p48,p49"/>
<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="p36,p1,p44,p41,p8,p34,p29,p10,p15,p45,p12,p20,p3,p19,p25,p43,p35,p42,p38,p9,p23,p21,p4,p6,p47,p2,p7,p14,p32,p26,p46,p39,p18,p27,p17,p28,p13,p11,p5,p33,p24,p16,p40,p30,p31,p37,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="acc=atmWDAcc(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmWDAcc)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="activeCard∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="activeCard(a)=c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="a∉withdrawFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈dom(activeCard)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqWD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmWDAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="a∉withdrawOk"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="bal(acc)&lt;am"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDfail/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" 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,reqWD,respWDok,respWDfail))" 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="p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p22,p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p22,p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p24,p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p26,p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p26,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p19,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p45,p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p49,p50"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p7,p17,p12,p5,p4,p1,p13,p6,p9,p16,p10,p3,p2,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p45,p46,p47,p49,p50,p51,p52,p53,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a∈sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈withdrawFail"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqWD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/grd10/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="ACCOUNT,ATM,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="p30,p2,p35,p32,p7,p28,p24,p8,p13,p36,p10,p17,p3,p15,p23,p33,p29,p34,p31,p9,p20,p18,p4,p6,p38,p19,p1,p5,p12,p25,p26,p11,p37,p22,p14,p21,p16,p27">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmWDAcc)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="acc∈dom(AccBalOnAtm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="a∈dom(activeCard)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈recvRespWDOk"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="a ↦ acc∈atmWDAcc"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/grd11/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(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</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="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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="withdrawOKAtm/grd9/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" 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,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p21,p22,p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p27,p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p27,p28"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p21,p22,p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p24,p48,p49"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p50,p51,p52"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p9,p19,p15,p6,p3,p1,p16,p7,p11,p20,p13,p8,p12,p2,p5,p4,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p48,p49,p50,p51,p52,p53,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am≤atmCashA(a)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈respWDok"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈recvRespWDOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="a∈sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFailsAtm/grd1/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" 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,reqWD,respWDok,respWDfail))" 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="p17,p18,p19,p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p17,p18,p19,p20"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" 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="p21,p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p21,p22"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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="p23,p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p23,p24"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<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.prHypAction name="HIDE8" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p18,p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p20,p44,p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p46,p47,p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p6,p16,p11,p4,p3,p1,p12,p5,p8,p15,p9,p2,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p44,p45,p46,p47,p48,p49,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈recvRespWDFail"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈respWDfail"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="a∈sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFailsAtm/act1/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="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="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardAccount∈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="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" 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="p7" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDok/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,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="p25,p2,p30,p27,p7,p21,p19,p8,p11,p31,p10,p13,p3,p12,p18,p28,p23,p29,p26,p9,p16,p14,p4,p6,p32,p15,p1,p5,p24,p20,p22,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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqWD ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∉sentRespWDOk"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∉recvRespWDOk"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈withdrawOk"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDok/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24,p6,p30,p18,p27,p10,p8,p5,p9,p31,p7,p12,p2,p11,p15,p28,p22,p29,p25,p3,p13,p26,p19,p21,p17,p14,p1,p4,p23,p16,p20">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="sentReqWD∈ℙ(atm)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDfail∈ℙ(atm)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDok∈ℙ(atm)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqWD∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="recvReqWD∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvRespWDFail∈ℙ(atm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="withdrawOkA∈ℙ(atm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespWDOk∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespWDOk∪{a}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∉recvRespWDOk"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="sentRespWDFail∈ℙ(atm)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈withdrawOk"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sentRespWDOk∈ℙ(atm)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawFailA∈ℙ(atm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDfail/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,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="p25,p2,p30,p27,p7,p23,p20,p8,p12,p31,p10,p14,p3,p13,p19,p28,p24,p29,p26,p9,p17,p15,p4,p6,p32,p16,p1,p5,p22,p21,p11,p18">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvReqWD ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉sentRespWDFail"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∉recvRespWDFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈withdrawFail"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDfail/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,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="p25,p2,p30,p27,p7,p23,p20,p8,p12,p31,p10,p14,p3,p13,p19,p28,p24,p29,p26,p9,p17,p15,p4,p6,p32,p16,p1,p5,p22,p21,p11,p18">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉sentRespWDFail"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sentRespWDFail∪{a}⊆atm"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∉recvRespWDFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈withdrawFail"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" org.eventb.core.prSets="ACCOUNT,ATM,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="p35,p2,p40,p37,p7,p33,p27,p8,p15,p41,p10,p19,p3,p17,p26,p38,p34,p39,p36,p9,p22,p20,p4,p6,p43,p21,p1,p5,p12,p29,p30,p11,p42,p25,p16,p24,p18,p32,p23,p14,p31,p13,p28">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmWDAcc)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="AccBalOnAtm(acc)≥am"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="acc∈dom(AccBalOnAtm)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCashA(a)≥am"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈dom(activeCard)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="a∈recvRespWDOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespWDOk ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="a ↦ acc∈atmWDAcc"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFailsAtm/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ACCOUNT,ATM,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,p2,p27,p24,p8,p20,p19,p9,p12,p28,p11,p14,p3,p13,p18,p25,p21,p26,p23,p10,p17,p15,p5,p7,p29,p16,p1,p6,p4">
<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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈recvRespWDFail"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="recvRespWDFail ∖ {a}⊆atm"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespWDok/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,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="p25,p2,p30,p27,p7,p21,p19,p8,p11,p31,p10,p13,p3,p12,p18,p28,p23,p29,p26,p9,p16,p14,p4,p6,p32,p15,p1,p5,p24,p20,p22,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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="activeCard" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="atmWDAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm⊆ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="withdrawOkMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="recvRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentRespWDFail⊆atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="withdrawFailA⊆atm"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentReqWD⊆atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDfail⊆atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCashA∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="sentRespWDOk∪{a}⊆atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawFailMsg∈atm ⇸ BOOL"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="activeCard∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDOk⊆atm"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqWD⊆atm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∉sentRespWDOk"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respWDok⊆atm"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD⊆atm"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∉recvRespWDOk"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈withdrawOk"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="AccBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="withdrawOkA⊆atm"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAccount∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="atmWDAcc∈atm ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDFail⊆atm"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/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(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" 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="p13" org.eventb.core.predicate="a∉withdrawOk">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬a∈withdrawOk">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/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(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∉withdrawOk">
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" 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="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬a∈withdrawOk">
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/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="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" 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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/act2/WD"/>
<org.eventb.core.prProof name="deposit/act1/WD"/>
<org.eventb.core.prProof name="transfer/act1/WD"/>
<org.eventb.core.prProof name="INITIALISATION/act18/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(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/act19/SIM"/>
<org.eventb.core.prProof name="SendReqWithdraw/grd2/GRD"/>
<org.eventb.core.prProof name="SendReqWithdraw/grd8/GRD"/>
<org.eventb.core.prProof name="SendReqWithdraw/grd3/GRD"/>
<org.eventb.core.prProof name="Deposit/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(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" 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="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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="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(reqWD,sentReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" 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="p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p8,p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<org.eventb.core.prRule name="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="p13">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" 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="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="p12" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/act2/SIM"/>
<org.eventb.core.prProof name="withdrawOK/grd6/WD"/>
<org.eventb.core.prProof name="INITIALISATION/act21/SIM"/>
<org.eventb.core.prProof name="withdrawFail/grd4/WD"/>
<org.eventb.core.prProof name="withdrawFail/grd2/GRD"/>
<org.eventb.core.prProof name="withdrawFail/grd4/GRD"/>
<org.eventb.core.prProof name="withdrawFail/grd8/GRD"/>
<org.eventb.core.prProof name="withdrawFail/grd5/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p0">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p34,p36,p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p5,p6,p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p8,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail">
<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="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="am≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmWDAm(a)&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqWD∈ℙ(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="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p17" 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="p42" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmWDAm(a)≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" 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="p19" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" 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="p0" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" 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="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p16" 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="p14" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd9/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" 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,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p28,p29,p30,p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p32,p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p32,p33"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p34,p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p34,p35"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p36,p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37"/>
<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="p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" 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="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p23,p21,p3"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p32">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p28,p29,p30"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p34">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p31,p60,p61"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p62,p64,p65"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p17,p27,p25,p15,p2,p12,p6,p16,p22,p11,p5,p23,p7,p21,p18,p1,p3,p14,p20,p8,p4,p10,p13,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p57,p58,p59,p60,p61,p62,p64,p65,p66,p67,p68,p69">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" 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="atmWDAm" 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="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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.prIdent name="withdrawFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="am≤atmCash(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="atmWDAm(a)&gt;bal(acc)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="a∈sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="atmWDAm(a)≤atmCash(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈reqWD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(atmWDAm)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈recvReqWD"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="withdrawOk⊆withdrawOkA"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am&gt;bal(acc)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="withdrawFail⊆withdrawFailA"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/grd7/WD"/>
<org.eventb.core.prProof name="withdrawOKAtm/grd4/GRD"/>
<org.eventb.core.prProof name="withdrawOKAtm/atmCashA/EQL"/>
<org.eventb.core.prProof name="withdrawOKAtm/grd10/GRD"/>
<org.eventb.core.prProof name="INITIALISATION/act4/SIM"/>
<org.eventb.core.prProof name="withdrawOK/grd4/WD"/>
<org.eventb.core.prProof name="withdrawOK/grd2/GRD"/>
<org.eventb.core.prProof name="withdrawOK/grd16/GRD"/>
<org.eventb.core.prProof name="withdrawOK/grd17/GRD"/>
<org.eventb.core.prProof name="withdrawOKAtm/grd11/GRD"/>
<org.eventb.core.prProof name="withdrawOK/grd16/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(reqWD,sentReqWD,recvReqWD))" 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="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification 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="r3" 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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" 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="p12" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" 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="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.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd8/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p14,p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p14,p15"/>
<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="p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p34"/>
<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="p35">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p36,p37"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p38,p39,p40"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" 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="p16" 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="p6" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDok∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" 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="p27" org.eventb.core.predicate="sendReqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqWD∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p18" 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="p36" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="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="p37" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<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="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="respWDfail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" 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.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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd6/GRD"/>
<org.eventb.core.prProof name="withdrawFail/grd14/GRD"/>
<org.eventb.core.prProof name="withdrawFailsAtm/act3/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trans ∖ {a}=trans ∖ {a}"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/act5/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trans ∖ {a}=trans ∖ {a}"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="INITIALISATION/act16/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×BOOL))=(∅ ⦂ ℙ(ATM×BOOL))"/>
<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="withdrawOK/grd10/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3,p4">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p14,p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p14,p15"/>
<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="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p39,p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sentReqWD∪recvReqWD" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sentRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p45,p46"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sentRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" 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="p11" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sentRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈withdrawOk">
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" 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="p20" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="atmCash(a)≥atmWDAm(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal(acc)≥atmWDAm(a)">
<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>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" 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="p41" org.eventb.core.predicate="atmCash(a)≥am">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" 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="p29" org.eventb.core.predicate="sentReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉withdrawOk">
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="bal(acc)≥am">
<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>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/grd11/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3,p4">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="p10,p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10,p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p14,p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p14,p15"/>
<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="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p39,p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sentReqWD∪recvReqWD" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sentRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p9,p45,p46"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sentRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" 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="p11" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪sentRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sentRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈withdrawOk">
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" 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="p20" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="atmCash(a)≥atmWDAm(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="bal(acc)≥atmWDAm(a)">
<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>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" 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="p41" org.eventb.core.predicate="atmCash(a)≥am">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" 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="p29" org.eventb.core.predicate="sentReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sentRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉withdrawOk">
<org.eventb.core.prIdent name="withdrawOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="bal(acc)≥am">
<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>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd12/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p34,p36,p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sentReqWD∪recvReqWD" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p5,p6,p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sentRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p8,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sentRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪sentRespWDFail∪recvRespWDFail">
<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="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="p42" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="am≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmWDAm(a)&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sentRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" 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="p39" org.eventb.core.predicate="atmWDAm(a)≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪respWDfail">
<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="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" 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="p26" org.eventb.core.predicate="sentReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sentRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈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="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="p47" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd13/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sentReqWD,recvReqWD))" 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="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sentRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sentRespWDFail,recvRespWDFail))" 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="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p34,p36,p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sentReqWD∪recvReqWD" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p5,p6,p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sentRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p8,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sentRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sentRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sentReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sentRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sentRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪sentRespWDFail∪recvRespWDFail">
<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="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="p42" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="am≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmWDAm(a)&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="sentRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sentRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" 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="p39" org.eventb.core.predicate="atmWDAm(a)≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqWD=sentReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sentReqWD∪recvReqWD∪sentRespWDOk∪recvRespWDOk∪respWDfail">
<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="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(sentReqWD∪recvReqWD)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardAcct∈CARD ↔ ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(respWDok,sentRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" 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="p26" org.eventb.core.predicate="sentReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sentRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(reqWD,sentReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈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="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="p47" org.eventb.core.predicate="(sentRespWDOk∪recvRespWDOk)∩(sentRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sentRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respWDok=sentRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd15/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p0">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p34,p36,p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p5,p6,p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p8,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail">
<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="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="am≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmWDAm(a)&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqWD∈ℙ(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="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p17" 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="p42" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmWDAm(a)≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" 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="p19" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" 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="p0" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" 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="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p16" 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="p14" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd16/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" 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="p11,p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" 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="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmWDAm(a)" org.eventb.core.prHyps="p0">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p34,p36,p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with reqWD=sendReqWD∪recvReqWD" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p5,p6,p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDok=sendRespWDOk∪recvRespWDOk" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p8,p40,p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with respWDfail=sendRespWDFail∪recvRespWDFail" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪respWDfail">
<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="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trans=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="am≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respWDok∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="atmWDAm(a)&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sendReqWD∈ℙ(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="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="withdrawFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)"/>
<org.eventb.core.prPred name="p17" 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="p42" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDOk∪recvRespWDOk)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="atmWDAm(a)≤atmCash(a)">
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="sendRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="respWDfail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" 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="p19" org.eventb.core.predicate="withdrawOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="withdrawOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="recvReqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" 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="p0" org.eventb.core.predicate="am=atmWDAm(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="atmWDAm(a)∈ℕ1"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqWD∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(sendRespWDOk∪recvRespWDOk)∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪sendRespWDOk∪recvRespWDOk∪sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=sendReqWD∪recvReqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" 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="p46" org.eventb.core.predicate="(sendReqWD∪recvReqWD)∩(sendRespWDFail∪recvRespWDFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="am&gt;bal(acc)">
<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>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)"/>
<org.eventb.core.prPred name="p16" 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="p14" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/grd17/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,reqWD,respWDok,respWDfail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(reqWD,sendReqWD,recvReqWD))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9,p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9,p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDok,sendRespWDOk,recvRespWDOk))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(respWDfail,sendRespWDFail,recvRespWDFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15,p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p15,p16"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.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="p18" 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="reqWD∩respWDok=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" 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=reqWD∪respWDok∪respWDfail">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(reqWD,sendReqWD,recvReqWD)">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="reqWD=sendReqWD∪recvReqWD">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="sendRespWDOk∩recvRespWDOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respWDfail=sendRespWDFail∪recvRespWDFail">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respWDok∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(respWDfail,sendRespWDFail,recvRespWDFail)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="sendReqWD∩recvReqWD=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvReqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendReqWD" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqWD,respWDok,respWDfail)">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respWDok=sendRespWDOk∪recvRespWDOk">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="sendRespWDFail∩recvRespWDFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqWD∩respWDfail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqWD" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDfail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(respWDok,sendRespWDOk,recvRespWDOk)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respWDok" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="sendRespWDOk" 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="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.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="SendReqWithdraw/grd8/WD"/>
</org.eventb.core.prFile>
