<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/[ATMproduct_TD]ATM_TD\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/[ATMproduct_TD]ATM_TD\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/[ATMproduct_TD]ATM_TD\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/[ATMproduct_TD]ATM_TD\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/[ATMproduct_TD]ATM_TD\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="INITIALISATION/[ATMproduct_TD]ATM_TD\mATM_T.BalTransfer_2_inv17/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂CARD·c∈ran(∅ ⦂ ℙ(ATM×CARD))⇒c∈(∅ ⦂ ℙ(CARD))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/[ATMproduct_TD]ATM_TD\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/[ATMproduct_TD]ATM_TD\mATM_D.Deposit_2_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">
<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/[ATMproduct_TD]ATM_TD\mATM_D.Deposit_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="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="(∅ ⦂ ℙ(ACCOUNT×ℤ))∈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/[ATMproduct_TD]ATM_TD\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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2/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/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv3/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/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv21/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/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv22/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/[ATMproduct_TD]MW_TD\mMW_D.Deposit_4_inv6/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/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_0_IntegralATM_0_inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="(∅ ⦂ ℙ(ACCOUNT×ℤ))∈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/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_0_IntegralATM_0_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT,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="(∅ ⦂ ℙ(CARD×ACCOUNT))∈CARD ⇸ 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/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv23/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/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv24/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/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5/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/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv6/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/[ATMproduct_TD]Bank_TD\mBank_D.Deposit_1_inv2/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/[ATMproduct_TD]Bank_TD\mBank_D.Deposit_4_inv5/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="SendReqTransfer/[ATMproduct_TD]ATM_TD\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,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trAmount{a ↦ am}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/[ATMproduct_TD]ATM_TD\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,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" 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="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/[ATMproduct_TD]ATM_TD\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,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="destAcc{a ↦ dest_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" 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="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p0" org.eventb.core.predicate="cardInAtmM{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" 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="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trAmountM{a ↦ am}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv21/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="srcAccM{a ↦ src_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv22/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p50"/>
<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="p13,p16,p14,p17,p20,p8,p1,p3,p18,p12,p15,p2,p11,p4,p19,p27,p6,p22,p23,p26,p25,p24,p21,p7,p9,p28,p29">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a ↦ c∈cardInAtm"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="destAccM{a ↦ dest_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferOk/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p12,p14,p2,p8,p10,p20,p4,p5,p19,p9,p11,p23,p13,p15,p16,p21,p18,p17,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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sendRespTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferOk/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p12,p14,p2,p8,p10,p20,p4,p5,p19,p9,p11,p23,p13,p15,p16,p21,p18,p17,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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="{a} ⩤ trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sendRespTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferOk/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv21/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p12,p14,p2,p8,p10,p20,p4,p5,p19,p9,p11,p23,p13,p15,p16,p21,p18,p17,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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sendRespTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferOk/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv22/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p12,p14,p2,p8,p10,p20,p4,p5,p19,p9,p11,p23,p13,p15,p16,p21,p18,p17,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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈sendRespTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferFail/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p21,p3,p1,p6,p11,p13,p2,p7,p9,p19,p4,p5,p18,p8,p10,p22,p12,p14,p15,p20,p17,p16,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sendRespTransferFail"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferFail/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p21,p3,p1,p6,p11,p13,p2,p7,p9,p19,p4,p5,p18,p8,p10,p22,p12,p14,p15,p20,p17,p16,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="{a} ⩤ trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sendRespTransferFail"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferFail/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv21/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p21,p3,p1,p6,p11,p13,p2,p7,p9,p19,p4,p5,p18,p8,p10,p22,p12,p14,p15,p20,p17,p16,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sendRespTransferFail"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvRespTransferFail/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv22/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p21,p3,p1,p6,p11,p13,p2,p7,p9,p19,p4,p5,p18,p8,p10,p22,p12,p14,p15,p20,p17,p16,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sendRespTransferFail"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/[ATMproduct_TD]ATM_TD\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,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p7,p12,p14,p2,p8,p10,p20,p4,p5,p19,p9,p11,p23,p13,p15,p16,p21,p18,p17,p6">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∈recvRespTransferOk"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ TRUE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="recvRespTransferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/[ATMproduct_TD]ATM_TD\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,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p13,p2,p7,p9,p19,p4,p5,p18,p8,p10,p23,p12,p14,p15,p20,p17,p16,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ FALSE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="recvRespTransferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈recvRespTransferFail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/[ATMproduct_TD]ATM_TD\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.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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="p1" 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="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendReqDeposit/[ATMproduct_TD]ATM_TD\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,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" 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="p6" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p17,p15,p18,p21,p8,p2,p4,p19,p13,p16,p3,p11,p5,p20,p28,p7,p23,p24,p27,p26,p25,p22,p10,p1,p9,p12,p29,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p15" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAm{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="sendReqDeposit/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" 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="p6" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p14,p17,p15,p18,p21,p8,p2,p4,p19,p13,p16,p3,p11,p5,p20,p28,p7,p23,p24,p27,p26,p25,p22,p10,p1,p9,p12,p29,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p15" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardInAtmM{a ↦ cardInAtm(a)}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p0" org.eventb.core.predicate="cardInAtmM{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="sendReqDeposit/[ATMproduct_TD]MW_TD\mMW_D.Deposit_4_inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" 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="p6" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p17,p15,p18,p21,p8,p2,p4,p19,p13,p16,p3,p11,p5,p20,p28,p7,p23,p24,p27,p26,p25,p22,p10,p1,p9,p12,p29,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="cardInAtm(a)∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈ran(cardInAtm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p32" 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="p15" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAmM{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p47" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" 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="p34" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="recvRespDeposit/[ATMproduct_TD]MW_TD\mMW_T.BalTransfer_4_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p42"/>
<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,p12,p11,p14,p17,p7,p1,p3,p15,p9,p13,p2,p8,p4,p16,p24,p5,p18,p19,p22,p21,p20,p23,p25,p6">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p34" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" 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="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" 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="p8" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p28" 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="p42" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p14" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvRespDeposit/[ATMproduct_TD]MW_TD\mMW_D.Deposit_4_inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" 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="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p42"/>
<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,p12,p11,p14,p17,p7,p1,p3,p15,p9,p13,p2,p8,p4,p16,p24,p5,p18,p19,p22,p21,p20,p23,p25,p6">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p34" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" 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="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" 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="p8" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p28" 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="p42" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" 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="p14" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈sendRespDep"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(cardInAtmM)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/[ATMproduct_TD]ATM_TD\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="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="depositATM/[ATMproduct_TD]ATM_TD\mATM_D.Deposit_2_inv10/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" 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="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
<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="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p13,p16,p14,p17,p21,p8,p1,p3,p19,p12,p15,p2,p10,p5,p20,p27,p7,p22,p23,p26,p25,p24,p28,p9,p4,p11,p6,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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p37" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" 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="p4" org.eventb.core.predicate="atmDepAm(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p45" 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="p43" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" 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="p9" org.eventb.core.predicate="a∈dom(atmDepAm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p31" 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="p46" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="recvRespDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="atmCashA{a ↦ atmCashA(a)+atmDepAm(a)}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="a∈recvRespDep"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositATM/[ATMproduct_TD]ATM_TD\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.prHypAction name="HIDE10" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p19"/>
<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="p20">
<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="p20" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" 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="p22">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p22" 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="p21" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" 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="p10" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p11" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" 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="p8" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p3" 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="p22" org.eventb.core.predicate="atmCashA∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈dom(atmCashA)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" 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="p18" org.eventb.core.predicate="am∈ℤ">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" 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="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.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.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd3/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">
<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="p2"/>
</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="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(trAmountM)∧trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd7/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<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="p1" org.eventb.core.predicate="a∈dom(destAccM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(destAccM)∧destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]MW_TD\mMW_T.RecvReqTransfer.grd6/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<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="p1" org.eventb.core.predicate="a∈dom(srcAccM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(srcAccM)∧srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv23/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="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="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmountM(a)" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with srcAccM(a)=src_ac" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p16,p19,p17,p20,p25,p12,p3,p6,p22,p15,p18,p4,p13,p7,p23,p32,p9,p27,p29,p31,p30,p28,p14,p1,p11,p24,p5,p2,p8,p10,p21,p26,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(srcAccM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" 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="p11" org.eventb.core.predicate="am=trAmountM(a)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈sendReqTransfer"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="srcAccB{a ↦ src_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p35" 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="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(destAccM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trAmountM(a)∈ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" 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="p51" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM(a)=dest_ac"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="srcAccB{a ↦ srcAccM(a)}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" 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="p37" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAccM(a)=src_ac"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="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.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv24/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="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="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmountM(a)" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with destAccM(a)=dest_ac" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p16,p19,p17,p20,p25,p12,p3,p6,p22,p15,p18,p4,p13,p7,p23,p32,p9,p27,p29,p31,p30,p28,p14,p1,p11,p24,p5,p2,p8,p10,p21,p26,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(srcAccM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" 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="p11" org.eventb.core.predicate="am=trAmountM(a)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="destAccB{a ↦ dest_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈sendReqTransfer"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p35" 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="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(destAccM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trAmountM(a)∈ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" 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="p51" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="destAccB{a ↦ destAccM(a)}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM(a)=dest_ac"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" 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="p37" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAccM(a)=src_ac"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="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.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="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="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmountM(a)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<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="p16,p19,p17,p20,p25,p11,p3,p6,p22,p15,p18,p4,p13,p7,p23,p32,p9,p27,p28,p31,p30,p29,p14,p1,p12,p24,p5,p2,p8,p10,p21,p26,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtmB{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(srcAccM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" 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="p11" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am=trAmountM(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈sendReqTransfer"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p35" 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="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(destAccM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trAmountM(a)∈ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" 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="p51" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM(a)=dest_ac"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" 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="p37" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAccM(a)=src_ac"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RecvReqTransfer/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" 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="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmountM(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p16,p19,p17,p20,p25,p11,p3,p6,p22,p15,p18,p4,p13,p7,p23,p32,p9,p27,p28,p31,p30,p29,p14,p1,p12,p24,p5,p2,p8,p10,p21,p26,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountM)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(srcAccM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" 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="p11" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am=trAmountM(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈sendReqTransfer"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p35" 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="p55" org.eventb.core.predicate="trAmountB{a ↦ trAmountM(a)}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trAmountB{a ↦ am}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(destAccM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="trAmountM(a)∈ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" 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="p51" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM(a)=dest_ac"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" 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="p37" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAccM(a)=src_ac"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferOk/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv23/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p14,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p13,p15,p16,p21,p18,p17,p12">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferOk/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv24/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p14,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p13,p15,p16,p21,p18,p17,p12">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferOk/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p14,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p13,p15,p16,p21,p18,p17,p12">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferOk/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p14,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p13,p15,p16,p21,p18,p17,p12">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferFail/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv23/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p13,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p12,p14,p15,p21,p18,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferFail/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv24/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p13,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p12,p14,p15,p21,p18,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferFail/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p13,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p12,p14,p15,p21,p18,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferFail/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" 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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p40"/>
<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="p22,p3,p1,p6,p11,p13,p2,p7,p9,p20,p4,p5,p19,p8,p10,p23,p12,p14,p15,p21,p18,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<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="p36" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p24" 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="p38" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<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="p40" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" 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="p28" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="src_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd14/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="p6">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(srcAccB)∧srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(srcAccB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd15/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="p6">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" 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="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prPred name="p6" 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(destAccB)∧destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(destAccB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd16/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<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">
<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="p6">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p2"/>
</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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(trAmountB)∧trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.grd12/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD">
<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="p6">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p6" 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(cardInAtmB)∧cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_0_IntegralATM_0_inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" 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="p13" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAccB(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p32,p23,p28,p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAccB(a)" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p8,p65"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmountB(a)" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p30,p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtmB(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p62"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p16,p19,p18,p21,p29,p11,p3,p5,p24,p15,p20,p4,p14,p6,p26,p39,p10,p31,p33,p37,p36,p34,p30,p32,p8,p23,p28,p27,p22,p25,p2,p17,p7,p38,p12,p1,p35,p9,p40,p62,p63,p64,p65,p67,p68,p70,p71,p73">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" 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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c ↦ srcAccB(a)∈cardAcct"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p41" 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="p55" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am=trAmountB(a)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈recvReqTransfer"/>
<org.eventb.core.prPred name="p43" 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="p68" org.eventb.core.predicate="¬srcAccB(a)=destAccB(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈dom(srcAccB)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="bal{destAccB(a) ↦ bal(destAccB(a))+trAmountB(a),srcAccB(a) ↦ bal(srcAccB(a)) − trAmountB(a)}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="dest_ac=destAccB(a)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="src_ac=srcAccB(a)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" 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="p73" org.eventb.core.predicate="cardInAtmB(a) ↦ srcAccB(a)∈cardAcct"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈dom(destAccB)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="srcAccB(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="trAmountB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬srcAccB(a)=dest_ac"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="bal{dest_ac ↦ bal(dest_ac)+am,srcAccB(a) ↦ bal(srcAccB(a)) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="trAmountB(a)&lt;bal(srcAccB(a))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" 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="p45" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="am&lt;bal(srcAccB(a))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(trAmountB)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="bal{destAccB(a) ↦ bal(destAccB(a))+am,srcAccB(a) ↦ bal(srcAccB(a)) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="destAccB(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="am&lt;bal(src_ac)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{dest_ac ↦ bal(dest_ac)+am,src_ac ↦ bal(src_ac) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="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.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/[ATMproduct_TD]Bank_TD\mBank_T.TransferOK.act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dest_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ∧src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<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="p6">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p6" 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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="src_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="TransferFails/[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd12/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD">
<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="p8">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" 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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtmB)∧cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd14/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="p8">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(srcAccB)∧srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(srcAccB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd15/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="p8">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" 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="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(destAccB)∧destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(destAccB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/[ATMproduct_TD]Bank_TD\mBank_T.TransferFails.grd16/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<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">
<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="p8">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p2"/>
</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="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬src_ac=dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(trAmountB)∧trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(trAmountB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="recvReqDeposit/[ATMproduct_TD]MW_TD\mMW_D.recvReqDeposit.grd5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<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="p2"/>
</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="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmM)∧atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="recvReqDeposit/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" 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="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p21"/>
<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="p12,p15,p13,p16,p20,p8,p1,p4,p18,p11,p14,p2,p10,p5,p19,p28,p6,p23,p24,p27,p26,p25,p9,p3,p7,p17,p22,p21,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p37" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtmB{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" 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="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p31" 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="p13" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="atmDepAmM(a)∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" 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="p45" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p34" 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="p17" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/[ATMproduct_TD]Bank_TD\mBank_D.Deposit_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" 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="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p12,p15,p13,p16,p20,p8,p1,p4,p18,p11,p14,p2,p10,p5,p19,p28,p6,p23,p24,p27,p26,p25,p9,p3,p7,p17,p22,p21,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p37" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="atmDepAmB{a ↦ atmDepAmM(a)}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p29" 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="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p31" 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="p13" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="atmDepAmM(a)∈ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAmB{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a ↦ c∈cardInAtmM"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" 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="p45" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈sendReqDep"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p34" 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="p17" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" 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="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p12,p11,p14,p17,p7,p2,p4,p15,p9,p13,p3,p8,p5,p16,p26,p6,p19,p20,p24,p22,p21,p18,p25,p23,p1">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p35" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" 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="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" 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="p43" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="sendRespDeposit/[ATMproduct_TD]Bank_TD\mBank_D.Deposit_4_inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" 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="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p12,p11,p14,p17,p7,p2,p4,p15,p9,p13,p3,p8,p5,p16,p26,p6,p19,p20,p24,p22,p21,p18,p25,p23,p1">
<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="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p35" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" 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="p4" org.eventb.core.predicate="atmCashA∈ATM → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p29" 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="p43" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" 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="p14" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="processedDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈processedDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd12/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<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="p2"/>
</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="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmB)∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="depositB/[ATMproduct_TD]Bank_TD\mBank_D.depositB.grd9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<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(cardInAtmB)∧cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/[ATMproduct_TD]Bank_TD\mBank_T.BalTransfer_0_IntegralATM_0_inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" 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="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAmB(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p14,p19,p17,p20,p24,p9,p4,p6,p21,p12,p18,p5,p11,p7,p22,p33,p8,p27,p29,p32,p30,p28,p25,p3,p2,p15,p13,p26,p1,p16,p31,p10,p23,p54,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p34" 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="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p36" 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="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="bal{acc ↦ bal(acc)+atmDepAmB(a)}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" 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="p51" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{acc ↦ bal(acc)+am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" 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="p38" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/[ATMproduct_TD]Bank_TD\mBank_D.Deposit_1_inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" 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="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with atmDepAmB(a)=am" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtmB(a)=c" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p14,p19,p17,p20,p24,p9,p4,p6,p21,p12,p18,p5,p11,p7,p22,p33,p8,p27,p29,p32,p30,p28,p25,p3,p2,p15,p13,p26,p1,p16,p31,p10,p23,p54,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmCashA" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardInAtmM" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccM" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trAmountM" 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.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="sendReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmB(a)=am"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmB)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="sendRespDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="sendRespTransferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferFail" 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="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p34" 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="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="recvReqDep∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmM∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p36" 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="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountM∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="sendReqDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendReqDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" 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="p51" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="atmCash{a ↦ atmCash(a)+atmDepAmB(a)}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="atmDepAmB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtmB(a)=c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAccM∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="cardInAtmB(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p39" 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="p38" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="sendRespTransferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="sendRespTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="processedDep∈ℙ(ATM)">
<org.eventb.core.prIdent name="processedDep" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ atmCash(a)+am}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈recvReqDep"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositB/[ATMproduct_TD]Bank_TD\mBank_D.depositB.act2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<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="p2"/>
</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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
<org.eventb.core.prProof name="depositB/[ATMproduct_TD]Bank_TD\mBank_D.depositB.act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.prProof>
</org.eventb.core.prFile>
