<?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="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/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="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/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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<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/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p1" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p8,p22"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p8,p4,p9,p3,p2,p6,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26,p27">
<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="am" org.eventb.core.type="ℤ"/>
<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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer∪{a}∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∪{a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a})"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p1" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p4,p22"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p8,p4,p9,p3,p2,p6,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26,p27">
<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="am" org.eventb.core.type="ℤ"/>
<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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferOk∈ℙ(trans∪{a})"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p1" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p9,p22"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p8,p4,p9,p3,p2,p6,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26,p27">
<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="am" org.eventb.core.type="ℤ"/>
<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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" 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="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p1" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p22"/>
<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,p4,p9,p3,p2,p6,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∉trans"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="trAmount{a ↦ am}∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="ReqTransfer/inv18/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" org.eventb.core.prSets="ATM">
<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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p22">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
</org.eventb.core.prAnte>
</org.eventb.core.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="p1" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p28"/>
<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="p30" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p4,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23,p28">
<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="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="p1" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p28"/>
<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="p31" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p4,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23,p28">
<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="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="p1" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p28"/>
<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="p32" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p4,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23,p28">
<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="p33">
<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="p1" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" 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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p28"/>
<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="p33" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p4,p10,p5,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23,p28">
<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="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p16"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p17"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p18"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p19"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p20"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" 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.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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail∪{a}=reqTransfer∪{a}∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="p25" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(reqTransfer∪{a})∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans∪{a}=reqTransfer∪{a}∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈trans"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans∪{a}=(reqTransfer∪{a})∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(reqTransfer∪{a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="(reqTransfer∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(reqTransfer∪{a})∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p3" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p6,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" 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="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respTransferOk∪{a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈transferFail"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="RespTransferOk/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p3" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22">
<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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transferOk ∖ {a}⊆transferOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈transferFail"/>
<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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p22">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p13"/>
</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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/>
</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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<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="p33">
<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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p20"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p35">
<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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p8,p6,p9,p2,p1,p5,p10,p4,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="(transferOk ∖ {a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail=reqTransfer∪(transferOk ∖ {a})∪transferFail∪respTransferOk∪{a}∪respTransferFail"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(transferOk ∖ {a})∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqTransfer∪(transferOk ∖ {a})∪transferFail∪(respTransferOk∪{a})∪respTransferFail"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="transferFail∩(respTransferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(respTransferOk∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="reqTransfer∩(respTransferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="reqTransfer∩(transferOk ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(transferOk ∖ {a})∩(respTransferOk∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈transferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪(transferOk ∖ {a})∪transferFail∪respTransferOk∪{a}∪respTransferFail"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk ∖ {a},transferFail,respTransferOk∪{a},respTransferFail)"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/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="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="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r2" 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="p16">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="trAmount" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤∧trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(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>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p6" 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="p16" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" 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.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" 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="p13" 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="p7" 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="p5" 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="p2" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p3" 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.prIdent name="transferOk" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" 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="p0" org.eventb.core.predicate="a∈dom(trAmount)∧trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" 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="p11" 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="p8" 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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,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="p8" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p28"/>
<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="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p31"/>
<org.eventb.core.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="p11" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<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="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p5,p13,p15,p3,p1,p10,p6,p11,p12,p2,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p32,p33">
<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="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="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.prPred name="p21" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(trans)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="reqTransfer ∖ {a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬a∈transferFail"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/inv16/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<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="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="trAmount" 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="p9" 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="p21" org.eventb.core.predicate="a∈transferFailA"/>
<org.eventb.core.prPred name="p12" 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="p13" 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="p22" 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="p18" 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="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="p26" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p14" 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="p10" 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="p8" 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="p20" org.eventb.core.predicate="⊤∧a∈transferFailA"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p6" 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="p4" 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="transferFailA∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p7" 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="p5" 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="p0" org.eventb.core.predicate="transferFail∪{a}⊆transferFailA"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail⊆transferFailA∧a∈transferFailA"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p17" 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="p25" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p3" 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="p11" 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="p16" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq: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,p11,p12,p13,p14,p15" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<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="p30" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36">
<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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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="p37">
<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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p13,p1,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p38">
<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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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="p39">
<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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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="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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<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="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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="p22">
<org.eventb.core.prRule name="r6" 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="r6" 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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<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="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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="0" 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="p8" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
<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="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=trAmount(a)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<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="p5,p12,p15,p3,p2,p10,p6,p11,p13,p1,p4,p7,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p29,p34">
<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="1" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r6" 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.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="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="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.prPred name="p30" org.eventb.core.predicate="trans=(reqTransfer ∖ {a})∪transferOk∪transferFail∪{a}∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="trAmount∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(trans,reqTransfer ∖ {a},transferOk,transferFail∪{a},respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(reqTransfer ∖ {a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="trAmount(a)∈ℕ1"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈dom(trAmount)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans=(reqTransfer ∖ {a})∪transferOk∪(transferFail∪{a})∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail=(reqTransfer ∖ {a})∪transferOk∪transferFail∪{a}∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(reqTransfer ∖ {a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="am=trAmount(a)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(reqTransfer ∖ {a})∩(transferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈reqTransfer"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="(transferFail∪{a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉transferFail"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬a∈transferFail"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="transferOk∩(transferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(transferFail∪{a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(reqTransfer ∖ {a})∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p3" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p8,p4,p9,p2,p1,p5,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respTransferFail∪{a}∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail∪{a}∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p3" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22">
<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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transferFail ∖ {a}⊆transferFailA"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∉transferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p22">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p12"/>
</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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p14"/>
</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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p17"/>
</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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<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="p35">
<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="p3" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<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="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p8,p5,p9,p2,p1,p4,p10,p7,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="transferOk∩(transferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail=reqTransfer∪transferOk∪(transferFail ∖ {a})∪respTransferOk∪respTransferFail∪{a}"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="reqTransfer∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="transferOk∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈transferOk"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪(transferFail ∖ {a})∪respTransferOk∪(respTransferFail∪{a})"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="(transferFail ∖ {a})∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" 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="p29" org.eventb.core.predicate="reqTransfer∩(transferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="(transferFail ∖ {a})∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈transferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪(transferFail ∖ {a})∪respTransferOk∪respTransferFail∪{a}"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="respTransferOk∩(respTransferFail∪{a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p8" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" 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="p22" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p8" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respTransferOk ∖ {a}∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" 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="p22" 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="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p8" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respTransferFail∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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/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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p8" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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,p5,p9,p2,p1,p4,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22">
<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="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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="transOkAtm{a ↦ TRUE}∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" 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="p22" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="TransferOKAtm/inv18/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" org.eventb.core.prSets="ATM">
<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="p6" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p22">
<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="p8" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"/>
</org.eventb.core.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="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p12"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p13"/>
</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="p8" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p16"/>
</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="p8" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p18"/>
</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="p8" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p20"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" 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="p8" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<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="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p7,p4,p9,p2,p1,p5,p10,p3,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="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="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.prPred name="p29" org.eventb.core.predicate="transferOk∩(respTransferOk ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans ∖ {a}=reqTransfer∪transferOk∪transferFail∪(respTransferOk ∖ {a})∪respTransferFail"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(respTransferOk ∖ {a})∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="a∉respTransferFail"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="transferFail∩(respTransferOk ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<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="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a}=reqTransfer∪transferOk∪transferFail∪(respTransferOk ∖ {a})∪respTransferFail"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈respTransferFail"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩(respTransferOk ∖ {a})=(∅ ⦂ ℙ(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="p3" org.eventb.core.predicate="a∈respTransferOk"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p4" org.eventb.core.prInfHyps="p22"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p8,p5,p9,p3,p2,p6,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="reqTransfer∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="reqTransfer∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="reqTransfer∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p4" org.eventb.core.prInfHyps="p22"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p8,p5,p9,p3,p2,p6,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferOk∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respTransferOk∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferOk∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p4" org.eventb.core.prInfHyps="p22"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<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="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p8,p5,p9,p3,p2,p6,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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="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.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="respTransferFail ∖ {a}∈ℙ(trans ∖ {a})"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="respTransferFail∈ℙ(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="respTransferFail ∖ {a}∈ℙ((reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a})"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<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="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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p4" org.eventb.core.prInfHyps="p22"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p5,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22">
<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="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="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.prPred name="p16" 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="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="reqTransfer∈ℙ(trans)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</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" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(trans,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="p7" org.eventb.core.prInfHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21"/>
<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="p22">
<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="p4" org.eventb.core.prInfHyps="p23"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p5,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p12"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p13"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p14"/>
</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="p4" org.eventb.core.prInfHyps="p23"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p5,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p16"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p17"/>
</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="p4" org.eventb.core.prInfHyps="p23"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p5,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p19"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="0" 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="p4" org.eventb.core.prInfHyps="p23"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p5,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="1" 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="p4" org.eventb.core.prInfHyps="p23"/>
<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="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p8,p6,p9,p3,p2,p5,p10,p1,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="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="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.prPred name="p30" org.eventb.core.predicate="transferFail∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="transferOk∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="transferFail∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="transferFail∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈respTransferFail"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="transferOkA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="trans∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="transferOk∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="respTransferOk∈ℙ(trans)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="respTransferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="transferOk∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="reqTransfer∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="respTransferFail∈ℙ(trans)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="transOkAtm∈ATM ⇸ BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="trAmount∈ATM ⇸ ℕ1"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="reqTransfer∩transferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="trans ∖ {a}=reqTransfer∪transferOk∪transferFail∪respTransferOk∪(respTransferFail ∖ {a})"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="trans=reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail"/>
<org.eventb.core.prPred name="p8" 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="p25" org.eventb.core.predicate="transferFailA∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="respTransferOk∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(reqTransfer∪transferOk∪transferFail∪respTransferOk∪respTransferFail) ∖ {a}=reqTransfer∪transferOk∪transferFail∪respTransferOk∪(respTransferFail ∖ {a})"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="transferFail⊆transferFailA"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="reqTransfer∩respTransferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="reqTransfer∩transferOk=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∉respTransferOk"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(trans,reqTransfer,transferOk,transferFail,respTransferOk,respTransferFail)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="transferOk⊆transferOkA"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬a∈respTransferOk"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="reqTransfer∩(respTransferFail ∖ {a})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="transferOk∩respTransferFail=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
