<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/ATM_W.Withdraw_2_inv9/INV" 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="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.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/ATM_W.Withdraw_2_inv11/INV" 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="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 × {0}∈ATM → ℕ"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/ATM_W.Withdraw_2_inv13/INV" 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="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×BOOL))∈ATM ⇸ BOOL"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/ATM_W.Withdraw_2_inv14/INV" 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="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×BOOL))∈ATM ⇸ BOOL"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/mATM_D.Deposit_2_inv8/INV" 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="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.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/mATM_T.BalTransfer_1_inv10/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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×CARD))∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/mATM_T.BalTransfer_2_inv8/INV" 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="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 ⇸ ℕ1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/mATM_T.BalTransfer_2_inv11/INV" 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="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×BOOL))∈ATM ⇸ BOOL"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/mATM_T.BalTransfer_2_inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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×ACCOUNT))∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/mATM_T.BalTransfer_2_inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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×ACCOUNT))∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqWithdraw/ATM_W.SendReqWithdraw.grd8/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="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.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.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="p9" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" 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="p14" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<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="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" 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="p4" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<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="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ATM"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<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/ATM_W.Withdraw_2_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.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p1,p17,p18,p15,p3,p5,p4,p6,p12,p2,p10,p8,p14,p16,p13,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="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="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmWDAm{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p18" 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="p27" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am≤atmCashA(a)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/ATM_W.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="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<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="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/ATM_W.Withdraw_2_inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p1,p15,p16,p14,p3,p5,p4,p6,p12,p11,p10,p13,p2,p8">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" 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="p26" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" 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="p2" org.eventb.core.predicate="am≤atmCashA(a)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈recvRespWDOk"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCashA{a ↦ atmCashA(a) − am}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/ATM_W.Withdraw_2_inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p1,p15,p16,p14,p3,p5,p4,p6,p12,p11,p10,p13,p2,p8">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="withdrawOkMsg{a ↦ TRUE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p17" 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="p26" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" 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="p2" org.eventb.core.predicate="am≤atmCashA(a)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈recvRespWDOk"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOKAtm/ATM_W.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="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<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="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<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.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.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFailsAtm/ATM_W.Withdraw_2_inv14/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" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p9,p1,p10,p12,p8,p2,p4,p3,p7,p6,p5">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈recvRespWDFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" 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="p0" org.eventb.core.predicate="withdrawFailMsg{a ↦ TRUE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/mATM_D.sendReqDeposit.grd5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" 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="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="p1">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.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="p11" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" 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="p9" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" 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="p8" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(cardInAtm)∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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.genMPL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/mATM_D.Deposit_2_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="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="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p14,p16"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p7,p1,p15,p17,p13,p3,p5,p4,p6,p10,p11,p14,p12,p2,p16,p18,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="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="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAm{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<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="p26" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/mATM_D.depositATM.grd10/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<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="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAm)∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/ATM_W.Withdraw_2_inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAm(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p6">
<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="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p9,p7,p1,p14,p16,p12,p2,p4,p3,p5,p11,p17,p13,p6,p15,p10,p8">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCashA{a ↦ atmCashA(a)+am}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmCashA{a ↦ atmCashA(a)+atmDepAm(a)}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/mATM_D.depositATM.act2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r1" 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="p12">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" 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.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.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="p9" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<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="a∈dom(atmCashA)∧atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" 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="p4" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="am∈ℤ">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ATM"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/mATM_T.BalTransfer_2_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" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" 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="p8" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p6,p1,p15,p16,p12,p2,p4,p3,p5,p9,p10,p11,p13,p17,p18">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="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="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" 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="p26" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trAmount{a ↦ am}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/mATM_T.BalTransfer_2_inv12/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="simplification rewrites" 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="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p6,p1,p15,p16,p12,p2,p4,p3,p5,p9,p10,p11,p13,p17,p18">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="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="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<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="srcAcc{a ↦ src_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" 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="p26" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/mATM_T.BalTransfer_2_inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" 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="p8" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p6,p1,p15,p16,p12,p2,p4,p3,p5,p9,p10,p11,p13,p17,p18">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="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="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="destAcc{a ↦ dest_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" 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="p26" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<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.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/mATM_T.BalTransfer_2_inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p9,p1,p10,p12,p8,p2,p4,p3,p6,p5,p7">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈recvRespTransferOk"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ TRUE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" 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="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/mATM_T.BalTransfer_2_inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p8,p1,p9,p12,p7,p2,p4,p3,p6,p5,p11">
<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.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmWDAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="withdrawFailMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="withdrawOkMsg" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="withdrawOkMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ FALSE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmWDAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="recvRespWDOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="recvRespWDFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvRespWDFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" 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="p7" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="withdrawFailMsg∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈recvRespTransferFail"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/ATM_W.Withdraw_2_inv22/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂CARD·c∈ran(∅ ⦂ ℙ(ATM×CARD))⇒c∈(∅ ⦂ ℙ(CARD))"/>
<org.eventb.core.prReas name="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/mATM_D.Deposit_2_inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂CARD·c∈ran(∅ ⦂ ℙ(ATM×CARD))⇒c∈(∅ ⦂ ℙ(CARD))"/>
<org.eventb.core.prReas name="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.prFile>
