<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/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/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/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/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/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/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="RecvReqTransfer/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" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p20"/>
<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="p1,p6,p2,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p8" 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="p7" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈CARD">
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p10" 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="p18" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="am∈ℤ">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dest_ac∈ACCOUNT">
<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="srcAccB{a ↦ src_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" 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="RecvReqTransfer/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" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p20"/>
<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="p1,p6,p2,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p8" 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="p7" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈CARD">
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p10" 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="p18" org.eventb.core.predicate="src_ac∈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="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="am∈ℤ">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="destAccB{a ↦ dest_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" 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="RecvReqTransfer/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" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p20"/>
<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="p1,p6,p2,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p8" 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="p7" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p10" 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="p18" org.eventb.core.predicate="src_ac∈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="cardInAtmB{a ↦ c}∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="am∈ℤ">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dest_ac∈ACCOUNT">
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" 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="RecvReqTransfer/BalTransfer_4_inv6/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<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="p0"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p13"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="recvReqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="src_ac∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" 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="p5" org.eventb.core.predicate="transferFail∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(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="am∈ℤ">
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dest_ac∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
</org.eventb.core.prPred>
<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/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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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.prProof>
<org.eventb.core.prProof name="TransferOK/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" 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="p19" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtmB(a)" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p15"/>
<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="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p5,p12,p24,p39"/>
<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="p44" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p9,p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmountB(a)" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p14,p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p8,p23,p13,p16,p18,p21,p15,p14,p5,p9,p12,p10,p20,p11,p4,p6,p7,p1,p22,p17,p2,p3,p24,p39,p40,p41,p42,p43,p45,p46,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" 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="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p30" 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="p17" org.eventb.core.predicate="am=trAmountB(a)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈recvReqTransfer"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬srcAccB(a)=destAccB(a)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardInAtmB(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="a∈dom(srcAccB)"/>
<org.eventb.core.prPred name="p50" 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="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="a∈dom(cardInAtmB)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dest_ac=destAccB(a)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="src_ac=srcAccB(a)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="recvReqTransfer∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="cardInAtmB(a) ↦ srcAccB(a)∈cardAcct"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p28" 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="p11" org.eventb.core.predicate="c=cardInAtmB(a)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="srcAccB(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="trAmountB(a)∈ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬srcAccB(a)=dest_ac"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="bal{dest_ac ↦ bal(dest_ac)+am,srcAccB(a) ↦ bal(srcAccB(a)) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="trAmountB(a)&lt;bal(srcAccB(a))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(trAmountB)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="am&lt;bal(srcAccB(a))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="bal{destAccB(a) ↦ bal(destAccB(a))+am,srcAccB(a) ↦ bal(srcAccB(a)) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="destAccB(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="am&lt;bal(src_ac)"/>
<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="p14" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="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.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="SendRespTransferOk/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p4,p5,p6,p3">
<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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p4,p5,p6,p3">
<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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p4,p5,p6,p3">
<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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p4,p5,p6,p3">
<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="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferOk∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" 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="p4" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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.prProof>
<org.eventb.core.prProof name="SendRespTransferFail/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p3,p4,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" 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="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p3,p4,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" 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="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" 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="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p3,p4,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" 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="{a} ⩤ cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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/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" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
<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="p1,p7,p2,p3,p4,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p9" 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="p8" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p11" 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="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="transferFail∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p7" 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="Deposit/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" 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="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p22"/>
<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="p1,p10,p4,p6,p7,p8,p9,p5,p2,p3">
<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="acc" org.eventb.core.type="ACCOUNT"/>
<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="cardInAtmB" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccB" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="trAmountB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="destAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtmB∈ℙ(ATM × CARD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trAmountB∈ℙ(ATM × ℤ)"/>
<org.eventb.core.prPred name="p12" 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="p11" org.eventb.core.predicate="srcAccB∈ℙ(ATM × ACCOUNT)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c∈CARD"/>
<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="p13" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" 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="p3" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="srcAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{acc ↦ bal(acc)+am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="destAccB∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardInAtmB∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="trAmountB∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p10" 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="Deposit/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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.prProof>
</org.eventb.core.prFile>
