<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalPP:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="2000"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ACCOUNT×ℤ))∈ACCOUNT ⇸ ℕ"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdraw/grd3/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p3"/>
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈dom(bal)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdraw/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p5,p4,p3,p6,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="bal(acc)≥am"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{acc ↦ bal(acc) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="acc∈dom(bal)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdraw/withdraw.Action1/WD"/>
<org.eventb.core.prProof name="deposit/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p4,p5,p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{acc ↦ bal(acc)+am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="acc∈dom(bal)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p4,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈dom(bal)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="transfer/grd7/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p7,p6,p3,p5,p1,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="src_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="transfer/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p9,p8,p5,p7,p1,p6,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am&lt;bal(src_ac)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{dest_ac ↦ bal(dest_ac)+am,src_ac ↦ bal(src_ac) − am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="transfer/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p9,p8,p5,p7,p1,p6,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dest_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ∧src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am&lt;bal(src_ac)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dest_ac∈ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="src_ac∈ACCOUNT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdraw/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p5,p4,p3,p6,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="bal(acc)≥am"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="acc∈dom(bal)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdraw/grd4/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p2,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈dom(bal)"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
