<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈ATM ⇸ ℕ1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×BOOL))∈ATM ⇸ BOOL"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv16/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ReqTransfer/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p7,p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p8,p21,p23,p3,p7,p15,p22,p5,p19,p10,p2,p6,p12,p4,p11,p16,p17,p13,p1,p20,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p46,p47,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer∪{a}∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="reqTransfer∪{a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ReqTransfer/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p21,p23,p3,p7,p15,p22,p5,p19,p10,p2,p6,p12,p4,p11,p16,p17,p13,p1,p20,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p46,p47">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trAmount{a ↦ am}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferOk/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p6,p16,p15,p4,p10,p14,p2,p13,p7,p1,p3,p8,p11,p5,p12,p9">
<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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferOk/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p7,p17,p18,p1,p6,p14,p19,p4,p16,p8,p2,p5,p11,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferOk∪{a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respTransferOk∪{a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferOk/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with transferOk=transferOkA" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p24,p3,p4,p8,p9,p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferOkA∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOkA ∖ {a}=transferOkA ∖ {a}"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" 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="p12" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" 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="p16" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩transferOkA=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOkA∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOkA∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" 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="p3" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p19" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈transferOkA"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transferOk ∖ {a}=transferOkA ∖ {a}"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∉transferFail">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p26" org.eventb.core.predicate="trans=reqTransfer∪transferOkA∪transferFail∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬a∈transferFail">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/grd3/WD"/>
<org.eventb.core.prProof name="TransferFails/inv16/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with transferFail=transferFailA" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p3,p5,p8,p11,p12,p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" 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="p11" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="transferFailA∪{a}=transferFailA∪{a}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" 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="p24" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFailA∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" 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="p13" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" 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="p14" 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="p32" org.eventb.core.predicate="transferFailA∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a∉transferOk∪transferFail">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="reqTransfer∩transferFailA=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬a∈transferOk∪transferFail">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" 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="p5" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p23" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFailA∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p27" 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="p25" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" 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="p4" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" 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="p1" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p31" org.eventb.core.predicate="transferOk∩transferFailA=(∅ ⦂ ℙ(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="transferFail∪{a}=transferFailA∪{a}"/>
<org.eventb.core.prPred name="p28" 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.prPred name="p10" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" 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="p21" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬a∈transferOk∪transferFailA">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p24,p46,p58"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p61"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p32,p62"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p25,p34,p14,p19,p23,p6,p13,p20,p11,p28,p17,p21,p31,p18,p30,p8,p32,p24,p4,p27,p1,p12,p5,p22,p3,p7,p9,p16,p2,p29,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p58,p60,p61,p62,p63,p64,p65,p66">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trAmount(a)&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="am&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferFail/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p6,p16,p15,p4,p9,p14,p2,p13,p7,p1,p3,p8,p10,p5,p11,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferFail/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p7,p17,p18,p1,p6,p13,p19,p4,p16,p8,p2,p5,p11,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="respTransferFail∪{a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail∪{a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferFail/inv16/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with transferFail=transferFailA" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p24,p3,p5,p8,p11,p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="a∈transferFailA"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(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="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬a∈transferOk">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFailA∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" 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="p29" org.eventb.core.predicate="transferFailA∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferFailA ∖ {a}=transferFailA ∖ {a}"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩transferFailA=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈ATM">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="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="p5" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transferFail ∖ {a}=transferFailA ∖ {a}"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p19" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFailA∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p21" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" 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="p1" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∉transferOk">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p28" org.eventb.core.predicate="transferOk∩transferFailA=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" 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="p17" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p18,p2,p6,p13,p19,p4,p15,p8,p1,p5,p10,p3,p9,p14,p11,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferOk ∖ {a}∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferOk ∖ {a}∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p17,p19,p1,p6,p13,p18,p4,p15,p8,p2,p5,p10,p3,p9,p14,p11,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ TRUE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p18,p2,p6,p14,p19,p4,p16,p8,p1,p5,p12,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail ∖ {a}∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferFail ∖ {a}∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/inv11/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p12,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ FALSE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv2/INV"/>
<org.eventb.core.prProof name="INITIALISATION/inv14/INV"/>
<org.eventb.core.prProof name="ReqTransfer/inv14/INV"/>
<org.eventb.core.prProof name="TransferFails/grd4/WD"/>
<org.eventb.core.prProof name="TransferFails/grd6/WD"/>
<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.prProof name="Deposit/bal/EQL"/>
<org.eventb.core.prProof name="INITIALISATION/act2/SIM"/>
<org.eventb.core.prProof name="INITIALISATION/act4/SIM"/>
<org.eventb.core.prProof name="TransferOK/grd4/WD"/>
<org.eventb.core.prProof name="TransferOK/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with transferOk=transferOkA" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p3,p4,p8,p9,p10,p17"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOkA∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" 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="p0" org.eventb.core.predicate="transferOk∪{a}=transferOkA∪{a}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" 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="p18" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩transferOkA=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferOkA∪{a}=transferOkA∪{a}"/>
<org.eventb.core.prPred name="p15" 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="p13" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="src_ac≠dest_ac">
<org.eventb.core.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="p7" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉transferOk∪transferFail">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬a∈transferOk∪transferFail">
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOkA∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOkA∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" 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="p3" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p21" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" 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="p23" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬a∈transferOkA∪transferFail">
<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="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p27" org.eventb.core.predicate="trans=reqTransfer∪transferOkA∪transferFail∪respTransferOk∪respTransferFail">
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" 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="p26" 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.prPred name="p10" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p24,p31,p47,p58"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p62"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p32,p61"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p25,p35,p14,p16,p23,p6,p13,p20,p11,p26,p17,p21,p30,p18,p29,p8,p34,p32,p24,p4,p31,p27,p1,p12,p7,p3,p22,p5,p9,p19,p2,p28,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p58,p60,p61,p62,p63,p64,p65,p66,p67">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="am≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="trAmount(a)≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am≤bal(src_ac)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="p11">
<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.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" 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="p11" 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="p10" org.eventb.core.predicate="¬a∈transferOk">
<org.eventb.core.prIdent name="a" 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="p9" org.eventb.core.predicate="a∉transferOk">
<org.eventb.core.prIdent name="a" 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="p7" org.eventb.core.predicate="a∉transferFail">
<org.eventb.core.prIdent name="a" 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="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.prPred name="p8" org.eventb.core.predicate="¬a∈transferFail">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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/grd4/GRD"/>
<org.eventb.core.prProof name="TransferOK/grd5/GRD"/>
<org.eventb.core.prProof name="TransferOK/grd6/GRD"/>
<org.eventb.core.prProof name="TransferOK/grd7/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd8/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd10/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd9/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd4/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd5/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd6/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd7/GRD"/>
<org.eventb.core.prProof name="TransferOK/grd3/WD"/>
<org.eventb.core.prProof name="INITIALISATION/inv9/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.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/inv10/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/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ACCOUNT))∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT,ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ACCOUNT))∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/grd1/WD"/>
<org.eventb.core.prProof name="TransferOK/grd2/WD"/>
<org.eventb.core.prProof name="TransferFails/grd1/WD"/>
<org.eventb.core.prProof name="TransferFails/grd2/WD"/>
<org.eventb.core.prProof name="ReqTransfer/inv12/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p21,p23,p3,p7,p15,p22,p5,p19,p10,p2,p6,p12,p4,p11,p16,p17,p13,p1,p20,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p46,p47">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="srcAcc{a ↦ src_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ReqTransfer/inv13/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p21,p23,p3,p7,p15,p22,p5,p19,p10,p2,p6,p12,p4,p11,p16,p17,p13,p1,p20,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p46,p47">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="destAcc{a ↦ dest_ac}∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/grd11/GRD"/>
<org.eventb.core.prProof name="TransferFails/grd12/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p24,p46,p59"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p61"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p32,p62"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p25,p34,p14,p19,p23,p6,p13,p20,p11,p28,p17,p21,p31,p18,p30,p8,p32,p24,p4,p27,p1,p12,p5,p22,p3,p7,p9,p16,p2,p29,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p59,p60,p61,p62,p63,p64,p65,p66">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trAmount(a)&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="am&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬a∈transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∉transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="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="srcAcc" 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(srcAcc)∧srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="srcAcc∈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="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(srcAcc)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="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="destAcc" 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="destAcc∈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="p2" org.eventb.core.predicate="a∈dom(destAcc)"/>
<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(destAcc)∧destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmount∈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="p2" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(trAmount)∧trAmount∈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.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="INITIALISATION/act7/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×CARD))=(∅ ⦂ ℙ(ATM×CARD))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="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="srcAcc" 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(srcAcc)∧srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="srcAcc∈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="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(srcAcc)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="destAcc" 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="destAcc∈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="p2" org.eventb.core.predicate="a∈dom(destAcc)"/>
<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(destAcc)∧destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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="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="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trAmount∈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="p2" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(trAmount)∧trAmount∈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.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="ReqTransfer/grd9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="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="cardInAtm" 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="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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/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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.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="cardInAtm" 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="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="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(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<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/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="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.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="cardInAtm" 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="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<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="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv17/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂CARD·c∈ran(∅ ⦂ ℙ(ATM×CARD))⇒c∈(∅ ⦂ ℙ(CARD))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ReqTransfer/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p8,p21,p23,p3,p7,p15,p22,p5,p19,p10,p2,p6,p12,p4,p11,p16,p17,p13,p1,p20,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p46,p47,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferOk∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ReqTransfer/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p22,p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p8,p21,p23,p3,p7,p15,p22,p5,p19,p10,p2,p6,p12,p4,p11,p16,p17,p13,p1,p20,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p46,p47,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p18,p2,p6,p13,p19,p4,p15,p8,p1,p5,p10,p3,p9,p14,p11,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqTransfer∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p18,p2,p6,p13,p19,p4,p15,p8,p1,p5,p10,p3,p9,p14,p11,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferFail∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p18,p2,p6,p14,p19,p4,p16,p8,p1,p5,p12,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqTransfer∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p18,p2,p6,p14,p19,p4,p16,p8,p1,p5,p12,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferOk∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferOk∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv18/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∩(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ReqTransfer/inv18/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk∩transferFail,respTransferOk∩respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p2,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p2,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p2,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p2,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p33,p34,p35,p36,p37,p38,p39,p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p33,p34,p35,p36,p37,p38,p39,p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p33,p34,p35,p36,p37,p38,p39,p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk∩transferFail,respTransferOk∩respTransferFail)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="trans=reqTransfer∪(transferOk∩transferFail)∪(respTransferOk∩respTransferFail)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans∪{a},reqTransfer∪{a},transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(reqTransfer∪{a})∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="trans∪{a}=reqTransfer∪{a}∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="cardInAtm(a)∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p11" 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="p41" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" 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="p23" org.eventb.core.predicate="c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="trans∪{a}=(reqTransfer∪{a})∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="cardInAtm∈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.prPred>
<org.eventb.core.prPred name="p16" 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="p17" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(reqTransfer∪{a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(transferOk∩transferFail)∩(respTransferOk∩respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqTransfer∩(respTransferOk∩respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" 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="p38" org.eventb.core.predicate="transferFail⊆transferFailA">
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(reqTransfer∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(reqTransfer∪{a})∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferOk⊆transferOkA">
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" 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.prPred name="p7" org.eventb.core.predicate="reqTransfer∩(transferOk∩transferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/inv18/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" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk∩transferFail,respTransferOk∩respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11,p12,p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p3,p4,p7,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p30,p32,p17,p29"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p36,p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p39,p33"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p43,p44,p7,p4,p9,p45,p46,p47,p48,p49,p50,p28,p39,p30,p36,p32,p51,p52,p17,p29,p33,p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="srcAcc(a)∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="trans=reqTransfer∪(transferOk∩transferFail)∪(respTransferOk∩respTransferFail)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="dest_ac∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="trans=(reqTransfer ∖ {a})∪transferOk∪{a}∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="cardInAtm∈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.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="reqTransfer∩(respTransferOk∩respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="src_ac∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(reqTransfer ∖ {a})∩(transferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="trans=(reqTransfer ∖ {a})∪(transferOk∪{a})∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p42" 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="p54" org.eventb.core.predicate="(reqTransfer ∖ {a})∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p51" 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="p59" org.eventb.core.predicate="(transferOk∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="transferOk⊆transferOkA">
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="dest_ac∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk∩transferFail,respTransferOk∩respTransferFail)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="cardInAtm(a) ↦ src_ac∈cardAcct">
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(transferOk∪{a})∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(reqTransfer ∖ {a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(transferOk∪{a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardInAtm(a) ↦ srcAcc(a)∈cardAcct">
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(reqTransfer ∖ {a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="am&lt;bal(srcAcc(a))">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="srcAcc∈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.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqTransfer ∖ {a},transferOk∪{a},transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="(transferOk∩transferFail)∩(respTransferOk∩respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="src_ac∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="transferFail⊆transferFailA">
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="trAmount(a)&lt;bal(srcAcc(a))">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am&lt;bal(src_ac)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="destAcc∈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.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="destAcc(a)∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c ↦ src_ac∈cardAcct">
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩(transferOk∩transferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p43" 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.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferOk/inv18/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p22"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p44">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p24"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p29"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p49">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p10,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(transferOk ∖ {a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail=reqTransfer∪(transferOk ∖ {a})∪transferFail∪respTransferOk∪{a}∪respTransferFail"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans=reqTransfer∪(transferOk ∖ {a})∪transferFail∪(respTransferOk∪{a})∪respTransferFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(respTransferOk∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqTransfer∩(transferOk ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk ∖ {a},transferFail,respTransferOk∪{a},respTransferFail)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(transferOk ∖ {a})∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="transferFail∩(respTransferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqTransfer∩(respTransferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(transferOk ∖ {a})∩(respTransferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans=reqTransfer∪(transferOk ∖ {a})∪transferFail∪respTransferOk∪{a}∪respTransferFail"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/inv18/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.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk∩transferFail,respTransferOk∩respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12,p13,p14,p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p12,p13,p14,p15"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p4,p5,p8,p2,p10">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p1,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p46,p47,p48,p8,p36,p49,p40,p50,p38,p51,p35,p52,p18,p43,p53,p4,p54,p39,p10,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p64">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p5,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p65">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p5,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p18,p36,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p40,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p39"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct">
<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.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="srcAcc(a)∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" 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="p15" org.eventb.core.predicate="trans=reqTransfer∪(transferOk∩transferFail)∪(respTransferOk∩respTransferFail)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="dest_ac∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trans∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard">
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="cardInAtm∈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.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="trAmount(a)&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct">
<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.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(reqTransfer ∖ {a})∩(transferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩(respTransferOk∩respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="src_ac∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" 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="p38" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p51" 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="p23" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬cardInAtm(a) ↦ src_ac∈cardAcct">
<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.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="transferOk⊆transferOkA">
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="am&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct">
<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.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="dest_ac∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk∩transferFail,respTransferOk∩respTransferFail)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans=(reqTransfer ∖ {a})∪transferOk∪transferFail∪{a}∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqTransfer ∖ {a},transferOk,transferFail∪{a},respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferOkA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="(reqTransfer ∖ {a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans=(reqTransfer ∖ {a})∪transferOk∪(transferFail∪{a})∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(reqTransfer ∖ {a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="srcAcc∈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.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="validCard⊆CARD">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(transferOk∩transferFail)∩(respTransferOk∩respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="src_ac∈ACCOUNT">
<org.eventb.core.prIdent name="ACCOUNT" org.eventb.core.type="ℙ(ACCOUNT)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="transferFail⊆transferFailA">
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct">
<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.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(transferFail∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="destAcc∈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.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="destAcc(a)∈dom(bal)">
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="transferOk∩(transferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩(transferOk∩transferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="validCard∈ℙ(CARD)">
<org.eventb.core.prIdent name="CARD" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="(transferFail∪{a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(reqTransfer ∖ {a})∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p56" 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.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferFail/inv18/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p21"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p23"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p44">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p26"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p49">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p13,p18,p4,p16,p8,p1,p5,p10,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferOk∩(transferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail=reqTransfer∪transferOk∪(transferFail ∖ {a})∪respTransferOk∪respTransferFail∪{a}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="reqTransfer∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(transferFail ∖ {a})∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail ∖ {a},respTransferOk,respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪(transferFail ∖ {a})∪respTransferOk∪respTransferFail∪{a}"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="respTransferOk∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferOk∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪(transferFail ∖ {a})∪respTransferOk∪(respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="reqTransfer∩(transferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(transferFail ∖ {a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/inv18/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk∪transferFail,respTransferOk∪respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5,p6,p7,p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p5,p6,p7,p8"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="NewPP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R0"/>
<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="-1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans ∖ {a},reqTransfer,transferOk,transferFail,respTransferOk ∖ {a},respTransferFail)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqTransfer∩(respTransferOk∪respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="trans=reqTransfer∪(transferOk∪transferFail)∪(respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(transferOk∪transferFail)∩(respTransferOk∪respTransferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk∪transferFail,respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∩(transferOk∪transferFail)=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.pp.pp:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFailsAtm/inv18/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p11,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p21"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p22"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p23"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p11,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p26"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p11,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p28"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p11,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p44">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p11,p3,p10,p15,p9,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans ∖ {a}=reqTransfer∪transferOk∪transferFail∪respTransferOk∪(respTransferFail ∖ {a})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans ∖ {a},reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail ∖ {a})"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="respTransferOk∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a}=reqTransfer∪transferOk∪transferFail∪respTransferOk∪(respTransferFail ∖ {a})"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqTransfer∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,CARD" org.eventb.core.psManual="true">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p47,p24,p31,p58"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p61"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p32,p60"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p25,p35,p14,p16,p23,p6,p13,p20,p11,p26,p17,p21,p30,p19,p29,p8,p34,p32,p24,p4,p31,p27,p1,p12,p7,p3,p22,p5,p9,p18,p2,p28,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="am≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trAmount(a)≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am≤bal(src_ac)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p24,p46,p58"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p60"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p32,p61"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p35">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p25,p34,p14,p19,p23,p6,p13,p20,p11,p28,p17,p21,p31,p16,p30,p8,p32,p24,p4,p27,p1,p12,p5,p22,p3,p7,p9,p18,p2,p29,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p58,p59,p60,p61,p62,p63,p64,p65,p66">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="trAmount(a)&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="am&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/grd9/GRD"/>
<org.eventb.core.prProof name="TransferOK/grd13/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p25,p32,p48,p60"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p5,p63"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p33,p62"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p26,p36,p15,p20,p24,p7,p14,p21,p12,p27,p17,p22,p31,p18,p30,p9,p35,p33,p25,p5,p32,p28,p2,p13,p8,p4,p23,p6,p10,p19,p3,p29,p1,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p60,p61,p62,p63,p64,p65,p66,p67,p68">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬a∈transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="am≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∉transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="trAmount(a)≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am≤bal(src_ac)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferFails/grd13/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p25,p47,p60"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p5,p62"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p33,p63"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p26,p35,p15,p19,p24,p7,p14,p21,p12,p28,p17,p22,p32,p18,p31,p9,p33,p25,p5,p29,p2,p13,p8,p23,p4,p6,p10,p20,p3,p30,p1,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p60,p61,p62,p63,p64,p65,p66,p67">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="trAmount(a)&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="am&gt;bal(src_ac)∨¬cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="am&gt;bal(srcAcc(a))∨¬cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬a∈transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∉transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="am&gt;bal(src_ac)∨c ↦ src_ac∉cardAcct"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="FinishTransfer/inv15/INV"/>
<org.eventb.core.prProof name="FinishTransfer/inv16/INV"/>
<org.eventb.core.prProof name="FinishTransfer/grd2/GRD"/>
<org.eventb.core.prProof name="RespTransferOk/inv16/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with transferFail=transferFailA" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p20,p22,p25,p28,p29,p31"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p7,p17,p18,p1,p6,p14,p19,p4,p16,p8,p2,p5,p11,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p40,p41,p42,p43,p44,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transferFail=transferFailA ∖ {a}"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferFailA=transferFailA ∖ {a}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFailA∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬a∈transferFailA"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferFailA∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqTransfer∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFailA∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferOk/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p17,p19,p2,p6,p14,p18,p4,p16,p8,p1,p5,p11,p3,p9,p15,p12,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="FinishTransfer2/inv15/INV"/>
<org.eventb.core.prProof name="FinishTransfer2/inv16/INV"/>
<org.eventb.core.prProof name="FinishTransfer2/grd2/GRD"/>
<org.eventb.core.prProof name="RespTransferFail/inv15/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with transferOk=transferOkA" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p20,p21,p25,p26,p27,p31"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p7,p17,p18,p1,p6,p13,p19,p4,p16,p8,p2,p5,p11,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p40,p41,p42,p43,p44,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOkA∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="reqTransfer∩transferOkA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬a∈transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferOkA∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferOkA∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transferOk=transferOkA ∖ {a}"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="transferOkA=transferOkA ∖ {a}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="trans=reqTransfer∪transferOkA∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="RespTransferFail/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p17,p19,p1,p6,p13,p18,p4,p16,p8,p2,p5,p11,p3,p9,p14,p15,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOK/grd12/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=cardInAtm(a)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with src_ac=srcAcc(a)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p24,p31,p47,p59"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dest_ac=destAcc(a)" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p62"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p32,p61"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p25,p35,p14,p16,p23,p6,p13,p20,p11,p26,p17,p21,p30,p18,p29,p8,p34,p32,p24,p4,p31,p27,p1,p12,p7,p3,p22,p5,p9,p19,p2,p28,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p59,p60,p61,p62,p63,p64,p65,p66,p67">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.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="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="destAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="destAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="reqTransfer" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="respTransferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="srcAcc" org.eventb.core.type="ℙ(ATM×ACCOUNT)"/>
<org.eventb.core.prIdent name="srcAccBalAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="trans" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transOkAtm" org.eventb.core.type="ℙ(ATM×BOOL)"/>
<org.eventb.core.prIdent name="transferFail" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferFailA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="transferOkA" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="srcAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂CARD·c∈ran(cardInAtm)⇒c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="srcAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferOk∪transferFail"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬a∈transferOk∪transferFail"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk=transferOkA"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(destAcc)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬srcAcc(a)=dest_ac"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="cardInAtm(a) ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(srcAcc)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬srcAcc(a)=destAcc(a)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac=srcAcc(a)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dest_ac=destAcc(a)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c=cardInAtm(a)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="cardInAtm(a) ↦ srcAcc(a)∈cardAcct"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="transferOkA∩transferFailA=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬a∈transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="am≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="srcAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∉transferOkA∪transferFailA"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="trAmount(a)≤bal(srcAcc(a))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="destAccBalAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferFail=transferFailA"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="destAcc∈ATM ⇸ ACCOUNT"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="am≤bal(src_ac)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="destAcc(a)∈dom(bal)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c ↦ src_ac∈cardAcct"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
