<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="inv9/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="p3,p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAmM)∧a∈dom(atmDepAm)⇒atmDepAmM∈ATM ⇸ ℤ∧atmDepAm∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)∧a∈dom(atmDepAm)⇒atmDepAmM∈ATM ⇸ ℤ∧atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmM)">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<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.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inv10/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p3,p4,p5">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"/>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmB)">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(atmDepAmB)∧a∈recvReqDep∧a∈dom(atmDepAm)⇒atmDepAm∈ATM ⇸ ℤ∧atmDepAmB∈ATM ⇸ ℤ">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈recvReqDep">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep∧a∈dom(atmDepAm)⇒atmDepAm∈ATM ⇸ ℤ∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAm∈ATM ⇸ ℤ∧atmDepAmB∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<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.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.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="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.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="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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/inv9/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.prIdent name="atmDepAm'" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×ℤ))⇒a∈dom(atmDepAm')∧(∅ ⦂ ℙ(ATM×ℤ))(a)=atmDepAm'(a)"/>
<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/inv10/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.prIdent name="atmDepAm'" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep'" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂ATM·a∈dom(∅ ⦂ ℙ(ATM×ℤ))∧a∈recvReqDep'⇒a∈dom(atmDepAm')∧atmDepAm'(a)=(∅ ⦂ ℙ(ATM×ℤ))(a)"/>
<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="recvReqDeposit/grd5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmDepAmM)∧atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" org.eventb.core.prSets="ATM">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1,p8,p10,p6,p9,p2,p7,p4,p3,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<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="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmDepAmB{a ↦ am}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmDepAmB{a ↦ atmDepAmM(a)}∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="recvReqDeposit/inv10/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="a0" 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="∀ goal (frees a0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p12,p13">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p12"/>
</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="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a0=a" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p16"/>
<org.eventb.core.prRule name="r5" 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="HIDE0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p1,p8,p10,p7,p9,p2,p6,p4,p3,p5,p12,p13,p18,p16,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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p24">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with am=atmDepAmM(a)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p8,p10,p7,p9,p2,p6,p4,p3,p5,p12,p13,p24,p16">
<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.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<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="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a0∈dom(atmDepAm)∧atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a0∈recvReqDep∪{a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atmDepAm(a0)=am">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ am})∧a0∈recvReqDep∪{a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈recvReqDep∪{a}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atmDepAm(a0)=atmDepAmM(a)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atmDepAm(a)=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atmDepAm(a0)=({a} ⩤ atmDepAmB)(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmB{a ↦ am})∧a0∈recvReqDep∪{a}⇒a0∈dom(atmDepAm)∧atmDepAm(a0)=(atmDepAmB{a ↦ am})(a0)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="am=atmDepAmM(a)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ atmDepAmM(a)})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atmDepAm(a0)=atmDepAmB(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬a0=a">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="a∈dom(atmDepAmB{a ↦ atmDepAmM(a)})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a0∈dom(atmDepAmB{a ↦ am})">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies: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="recvRespDeposit/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" 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="p1,p6,p8,p5,p7,p2,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{a} ⩤ atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<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="recvRespDeposit/inv9/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="a0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="ATM">
<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="p9">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a0)" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<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="ML" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1,p6,p8,p4,p7,p2,p5,p3,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1,p6,p8,p4,p7,p2,p5,p3,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.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="1.1.1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="MAX_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="MIN_CASH" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="atmDepAm" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmB" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atmDepAmM" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="recvReqDep" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a0∈dom(atmDepAm)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmB)∧a∈recvReqDep⇒a∈dom(atmDepAm)∧atmDepAm(a)=atmDepAmB(a)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="a0∈dom(atmDepAmM) ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmDepAmM∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a0∈dom(atmDepAm)∧atmDepAmM(a0)=atmDepAm(a0)">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmM) ∖ {a}⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmM)(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom(atmDepAmM) ∖ {a}⇒a0∈dom(atmDepAm)∧atmDepAmM(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a0⦂ATM·a0∈dom({a} ⩤ atmDepAmM)⇒a0∈dom(atmDepAm)∧({a} ⩤ atmDepAmM)(a0)=atmDepAm(a0)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂ATM·a∈dom(atmDepAmM)⇒a∈dom(atmDepAm)∧atmDepAmM(a)=atmDepAm(a)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(atmDepAmM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmDepAmB∈ATM ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a0∈dom(atmDepAmM) ∖ {a}">
<org.eventb.core.prIdent name="a0" org.eventb.core.type="ATM"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
