<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/atm_acbal.type/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈(∅ ⦂ ℙ(ATM)) ⇸ ℕ"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/atm_cash.type/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈(∅ ⦂ ℙ(ATM)) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/atm_card.type/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×Card))∈(∅ ⦂ ℙ(ATM)) ⇸ ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/idle.type/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ((∅ ⦂ ℙ(ATM)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/active_atm.type/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ((∅ ⦂ ℙ(ATM)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/ATM_SM_partitions_atm/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,Card">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" 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="0" org.eventb.core.prGoal="p7">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p4,p2,p1,p3,p5,p6">
<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="1" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p4,p2,p1,p3,p5,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∩(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM),∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))=(∅ ⦂ ℙ(ATM))∪(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/atm_card.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p9,p1,p5,p6,p16,p10,p4,p7,p15,p11,p13,p12,p18,p3,p2,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_card∪{selfATM ↦ c}∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/idle.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p9,p1,p5,p6,p16,p10,p4,p7,p15,p11,p13,p12,p18,p3,p2,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="idle ∖ {selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/active_atm.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p9,p1,p5,p6,p16,p10,p4,p7,p15,p11,p13,p12,p18,p3,p2,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="active_atm∪{selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/ATM_SM_partitions_atm/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19,p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p19,p20"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" 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="0" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewritesL1:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p23">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p15,p8,p1,p5,p6,p16,p9,p14,p4,p13,p10,p12,p11,p3,p2,p7,p19,p20,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.prAnte name="1" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p15,p8,p1,p5,p6,p16,p9,p14,p4,p13,p10,p12,p11,p3,p2,p7,p17,p19,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm=idle∪active_atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm=(idle ∖ {selfATM})∪(active_atm∪{selfATM})"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(atm,idle ∖ {selfATM},active_atm∪{selfATM})"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm=(idle ∖ {selfATM})∪active_atm∪{selfATM}"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(idle ∖ {selfATM})∩(active_atm∪{selfATM})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/reloadCash.Guard1/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,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p8,p1,p4,p5,p15,p9,p3,p6,p14,p10,p12,p11,p16,p2,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/atm_cash.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p8,p1,p4,p5,p18,p10,p3,p6,p17,p11,p15,p14,p19,p2,p7,p9,p12,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" 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="atm_cash{selfATM ↦ MAX_CASH}∈atm → ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_cash(selfATM)&lt;MIN_CASH"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/reloadCash.Action1/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p8,p1,p4,p5,p19,p10,p17,p3,p6,p18,p11,p15,p14,p20,p2,p7,p9,p12,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_cash(selfATM)&lt;MIN_CASH"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/ejectCard.Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p9,p2,p6,p7,p17,p10,p5,p8,p15,p11,p13,p12,p18,p3,p4,p1,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/atm_card.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p10,p2,p7,p8,p19,p11,p5,p9,p17,p12,p14,p13,p20,p3,p4,p1,p18,p6,p15">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_card ∖ {selfATM ↦ c}∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/idle.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p10,p2,p7,p8,p19,p11,p5,p9,p17,p12,p14,p13,p20,p3,p4,p1,p18,p6,p15">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="idle∪{selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/active_atm.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p10,p2,p7,p8,p19,p11,p5,p9,p17,p12,p14,p13,p20,p3,p4,p1,p18,p6,p15">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="active_atm ∖ {selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/ATM_SM_partitions_atm/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" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13,p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p13,p14"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" 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="0" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p9,p4,p2,p7,p11,p10,p5,p8,p6,p3,p1,p13,p14">
<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="1" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p9,p4,p2,p7,p11,p10,p5,p8,p6,p3,p1,p13,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(idle∪{selfATM})∩(active_atm ∖ {selfATM})=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm=idle∪active_atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm=(idle∪{selfATM})∪(active_atm ∖ {selfATM})"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(atm,(idle∪{selfATM}),(active_atm ∖ {selfATM}))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p2,p8,p9,p20,p12,p17,p5,p10,p18,p13,p15,p14,p21,p6,p7,p4,p3,p1,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Guard3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p12,p2,p9,p10,p22,p13,p19,p5,p11,p20,p14,p16,p15,p23,p6,p7,p4,p3,p1,p21,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Guard4/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p7,p8,p24,p10,p23,p3,p19,p22,p20,p12,p11,p26,p16,p17,p4,p2,p1,p25,p6,p21,p18,p15,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(card_account)∧card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Guard5/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p15,p7,p8,p27,p11,p26,p3,p21,p25,p22,p13,p12,p29,p18,p19,p4,p2,p1,p28,p6,p24,p20,p16,p5,p17,p9,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/self/WFIS" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p30,p12,p29,p3,p23,p28,p24,p15,p14,p32,p20,p21,p4,p2,p1,p31,p6,p27,p22,p18,p5,p19,p10,p26,p8,p13,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∃self⦂Account·ac=self"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/atm_acbal.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p30,p12,p29,p3,p23,p28,p24,p15,p14,p32,p20,p21,p4,p2,p1,p31,p6,p27,p22,p18,p5,p19,p10,p26,p8,p13,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal{selfATM ↦ bal(ac) − am}∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/atm_cash.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p30,p12,p29,p3,p23,p28,p24,p15,p14,p32,p20,p21,p4,p2,p1,p31,p6,p27,p22,p18,p5,p19,p10,p26,p8,p13,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_cash{selfATM ↦ atm_cash(selfATM) − am}∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/self.type/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p31,p12,p30,p3,p23,p29,p24,p15,p14,p33,p20,p21,p4,p2,p1,p32,p6,p28,p22,p18,p5,p19,p10,p27,p8,p13,p26,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="self∈account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdraw.Guard1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p17,p12,p18,p8,p10,p32,p13,p31,p3,p24,p30,p25,p16,p15,p34,p21,p22,p4,p2,p1,p33,p6,p29,p23,p19,p5,p20,p11,p28,p9,p14,p27,p26,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="self∈dom(bal)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal(self)≥am"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Action1/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p31,p12,p30,p3,p23,p29,p24,p15,p14,p33,p20,p21,p4,p2,p1,p32,p6,p28,p22,p18,p5,p19,p10,p27,p8,p13,p26,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Action2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p31,p12,p30,p3,p23,p29,p24,p15,p14,p33,p20,p21,p4,p2,p1,p32,p6,p28,p22,p18,p5,p19,p10,p27,p8,p13,p26,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdrawOK.Action3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p17,p7,p9,p31,p12,p30,p3,p23,p29,p24,p15,p14,p33,p20,p21,p4,p2,p1,p32,p6,p28,p22,p18,p5,p19,p10,p27,p8,p13,p26,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawOK/withdraw.Action1/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p17,p12,p18,p8,p10,p32,p13,p31,p3,p24,p30,p25,p16,p15,p34,p21,p22,p4,p2,p1,p33,p6,p29,p23,p19,p5,p20,p11,p28,p9,p14,p27,p26,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="self∈dom(bal)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_cash(selfATM)≥am"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="bal{ac ↦ bal(ac) − am}=bal{self ↦ bal(self) − am}"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/withdrawFail.Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p2,p8,p9,p19,p12,p5,p10,p17,p13,p15,p14,p20,p6,p7,p4,p3,p1,p18">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/withdrawFail.Guard3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p12,p2,p9,p10,p21,p13,p5,p11,p19,p14,p16,p15,p22,p6,p7,p4,p3,p1,p20,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(card_account)∧card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/withdrawFail.Guard4/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p18,p22,p19,p12,p11,p26,p16,p17,p4,p2,p1,p25,p5,p21,p15,p8,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/atm_acbal.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p16,p7,p8,p27,p11,p26,p3,p21,p25,p22,p13,p12,p29,p19,p20,p4,p2,p1,p28,p6,p24,p18,p9,p23,p15,p17,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal(ac)&lt;am"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal{selfATM ↦ bal(ac)}∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="withdrawFail/withdrawFail.Action1/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p16,p7,p8,p27,p11,p26,p3,p21,p25,p22,p13,p12,p29,p19,p20,p4,p2,p1,p28,p6,p24,p18,p9,p23,p15,p17,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal(ac)&lt;am"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="checkBalance/checkBalance.Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p10,p2,p7,p8,p19,p11,p16,p5,p9,p17,p12,p14,p13,p20,p4,p3,p6,p1,p18">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="checkBalance/checkBalance.Guard3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p17,p11,p2,p8,p9,p21,p12,p18,p5,p10,p19,p13,p15,p14,p22,p4,p3,p6,p1,p20,p7,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(card_account)∧card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="checkBalance/self/WFIS" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p23,p10,p22,p3,p17,p21,p18,p12,p11,p25,p4,p2,p16,p1,p24,p5,p20,p15,p8,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∃self⦂Account·ac=self"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="checkBalance/atm_acbal.type/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p15,p7,p8,p25,p11,p24,p3,p19,p23,p20,p13,p12,p27,p4,p2,p18,p1,p26,p6,p22,p17,p9,p21,p16,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal{selfATM ↦ bal(ac)}∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="checkBalance/self.type/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p17,p22,p18,p12,p11,p26,p4,p2,p16,p1,p25,p5,p21,p15,p8,p20,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="self∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="checkBalance/checkBalance.Action1/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p17,p22,p18,p12,p11,p26,p4,p2,p16,p1,p25,p5,p21,p15,p8,p20,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="self" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac=self"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/atm_acbal.type/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p7,p1,p4,p5,p14,p8,p2,p6,p13,p9,p11,p10,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal∈atm∪{selfATM} ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/atm_cash.type/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p7,p1,p4,p5,p14,p8,p2,p6,p13,p9,p11,p10,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_cash{selfATM ↦ MAX_CASH}∈atm∪{selfATM} → ℕ"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/atm_card.type/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p7,p1,p4,p5,p14,p8,p2,p6,p13,p9,p11,p10,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_card∈atm∪{selfATM} ⇸ ValidCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/idle.type/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p7,p1,p4,p5,p14,p8,p2,p6,p13,p9,p11,p10,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="idle∪{selfATM}∈ℙ(atm∪{selfATM})"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/active_atm.type/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p7,p1,p4,p5,p14,p8,p2,p6,p13,p9,p11,p10,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" 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="active_atm∈ℙ(atm∪{selfATM})"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/ATM_SM_partitions_atm/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,Account,Card">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16,p17"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p16,p17"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" 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="0" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p13,p6,p1,p4,p5,p14,p7,p12,p2,p11,p8,p10,p9,p3,p16,p17">
<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="1" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p13,p6,p1,p4,p5,p14,p7,p12,p2,p11,p8,p10,p9,p3,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</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="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm∪{selfATM}=(idle∪{selfATM})∪active_atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atm=idle∪active_atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(idle∪{selfATM})∩active_atm=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(atm∪{selfATM},idle∪{selfATM},active_atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/type/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:0" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
</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="p2" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm=idle∪active_atm">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="InvalidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ValidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(atm,idle,active_atm)">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/type1/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:0" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
</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="p2" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm=idle∪active_atm">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="InvalidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ValidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(atm,idle,active_atm)">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/type2/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4"/>
<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="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (atm_card(a)=c)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p9,p0"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (atm=idle∪active_atm)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (card_account(atm_card(a))=ac)" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p11"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p1"/>
</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="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card(a)∈ValidCard">
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈ValidCard">
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ac∈account">
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="a∈idle∪active_atm"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="card_account(atm_card(a))=ac"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm=idle∪active_atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="InvalidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(atm_card(a))∈account">
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm_card(a)=c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ValidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/Action1/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(atm,idle,active_atm))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="0">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2"/>
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:0" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
</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="p2" org.eventb.core.predicate="idle∩active_atm=(∅ ⦂ ℙ(ATM))">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="atm=idle∪active_atm">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="InvalidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)">
<org.eventb.core.prIdent name="ATM" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="account∈ℙ(Account)">
<org.eventb.core.prIdent name="Account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ValidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(atm,idle,active_atm)">
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
</org.eventb.core.prPred>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/init2/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:0" 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="p0"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="InvalidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ValidCard∈ℙ(Card)">
<org.eventb.core.prIdent name="Card" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ValidCard" org.eventb.core.type="ℙ(Card)"/>
</org.eventb.core.prPred>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/Guard3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p12,p2,p9,p10,p22,p13,p19,p5,p11,p20,p14,p16,p15,p23,p6,p7,p4,p3,p1,p21,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/Guard4/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p12,p2,p9,p10,p22,p13,p19,p5,p11,p20,p14,p16,p15,p23,p6,p7,p4,p3,p1,p21,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(card_account)∧card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/type1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p12,p2,p8,p10,p17,p13,p16,p5,p18,p7,p1,p9,p3,p6,p4,p11,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositFail/Guard3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p12,p2,p9,p10,p22,p13,p19,p5,p11,p20,p14,p16,p15,p23,p6,p7,p4,p3,p1,p21,p8,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(card_account)∧card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositFail/Guard4/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p18,p22,p19,p12,p11,p26,p16,p17,p4,p2,p1,p25,p5,p21,p15,p8,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/type2/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈(∅ ⦂ ℙ(ATM)) ⇸ ℕ"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/type3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalPP" 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="R500"/>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×ℤ))∈(∅ ⦂ ℙ(ATM)) → ℕ"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/type4/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM×Card))∈(∅ ⦂ ℙ(ATM)) ⇸ ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/type5/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ((∅ ⦂ ℙ(ATM)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/type6/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,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p2,p1,p3,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ATM))∈ℙ((∅ ⦂ ℙ(ATM)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/type4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p8,p1,p5,p6,p16,p9,p14,p4,p15,p10,p12,p11,p18,p3,p2,p7,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_card∪{selfATM ↦ c}∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/type5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p8,p1,p5,p6,p16,p9,p14,p4,p15,p10,p12,p11,p18,p3,p2,p7,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="idle ∖ {selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="insertCard/type6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p8,p1,p5,p6,p16,p9,p14,p4,p15,p10,p12,p11,p18,p3,p2,p7,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="selfATM∈idle"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="active_atm∪{selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="selfATM∉dom(atm_card)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/Guard1/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,p10,p11" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p11,p6,p10,p5,p8,p2,p1,p7,p4">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/type3/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" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p6,p14,p9,p13,p5,p11,p3,p1,p10,p7,p12,p4,p8">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ MAX_CASH}∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash(a)&lt;MIN_CASH"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p8,p2,p6,p7,p17,p9,p14,p5,p15,p10,p12,p11,p18,p3,p4,p1,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/type4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p9,p2,p7,p8,p19,p10,p16,p5,p17,p11,p13,p12,p20,p3,p4,p1,p18,p6,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_card ∖ {selfATM ↦ c}∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/type5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p9,p2,p7,p8,p19,p10,p16,p5,p17,p11,p13,p12,p20,p3,p4,p1,p18,p6,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="idle∪{selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/type6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p9,p2,p7,p8,p19,p10,p16,p5,p17,p11,p13,p12,p20,p3,p4,p1,p18,p6,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="active_atm ∖ {selfATM}∈ℙ(atm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p2,p8,p9,p20,p12,p17,p5,p10,p18,p13,p15,p14,p21,p6,p7,p4,p3,p1,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/Guard5/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p15,p7,p8,p27,p11,p26,p3,p21,p25,p22,p13,p12,p29,p18,p19,p4,p2,p1,p28,p6,p24,p20,p16,p5,p17,p9,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="bal(ac)≥am"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/type2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p15,p7,p8,p26,p11,p25,p3,p20,p24,p21,p13,p12,p28,p18,p19,p4,p2,p1,p27,p6,p23,p17,p9,p22,p16,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal{selfATM ↦ bal(ac)+am}∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/type3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p9,p15,p6,p7,p26,p10,p25,p3,p19,p24,p20,p13,p12,p28,p17,p18,p4,p2,p1,p27,p5,p23,p16,p8,p22,p11,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="selfATM∈dom(atm_cash)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_cash{selfATM ↦ atm_cash(selfATM)+am}∈atm → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/Action2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p18,p22,p19,p12,p11,p26,p16,p17,p4,p2,p1,p25,p5,p21,p15,p8,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositOK/Action3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p18,p22,p19,p12,p11,p26,p16,p17,p4,p2,p1,p25,p5,p21,p15,p8,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositFail/Guard2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p11,p2,p8,p9,p20,p12,p17,p5,p10,p18,p13,p15,p14,p21,p6,p7,p4,p3,p1,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_card)∧atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositFail/type2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p16,p7,p8,p27,p11,p26,p3,p21,p25,p22,p13,p12,p29,p19,p20,p4,p2,p1,p28,p6,p24,p18,p9,p23,p15,p17,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal(ac)&lt;am"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal{selfATM ↦ bal(ac)}∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="depositFail/Action1/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p16,p7,p8,p27,p11,p26,p3,p21,p25,p22,p13,p12,p29,p19,p20,p4,p2,p1,p28,p6,p24,p18,p9,p23,p15,p17,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal(ac)&lt;am"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ac∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/type2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p7,p1,p4,p5,p15,p8,p13,p2,p6,p14,p9,p11,p10,p16,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal∈atm∪{selfATM} ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/type3/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" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p11,p6,p10,p5,p8,p2,p1,p7,p4">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ MAX_CASH}∈atm∪{a} → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/type4/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p6,p1,p4,p5,p14,p7,p12,p2,p13,p8,p10,p9,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_card∈atm∪{selfATM} ⇸ ValidCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/type5/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p6,p1,p4,p5,p14,p7,p12,p2,p13,p8,p10,p9,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="idle∪{selfATM}∈ℙ(atm∪{selfATM})"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="start/type6/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,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p6,p1,p4,p5,p14,p7,p12,p2,p13,p8,p10,p9,p15,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" 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="active_atm∈ℙ(atm∪{selfATM})"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="selfATM∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/Guard2/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,p10,p11,p12,p13,p14" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p14,p10,p13,p5,p12,p4,p1,p11,p7,p6,p8,p2">
<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="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈atmCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/Guard4/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p10,p1,p6,p8,p21,p11,p19,p3,p20,p12,p15,p13,p22,p4,p5,p9,p2,p7,p14,p17,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈active_atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(card_account)∧card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(atm_card)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="atm_card(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/type2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p15,p7,p8,p26,p11,p25,p3,p20,p24,p21,p13,p12,p28,p18,p19,p4,p2,p1,p27,p6,p23,p17,p9,p22,p16,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ac∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atm_acbal{selfATM ↦ bal(ac)+am}∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/type3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p17,p12,p16,p6,p14,p4,p1,p13,p7,p8,p15,p2,p18,p11,p5,p10">
<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="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardValidated=TRUE"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ atmCash(a)+am}∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/Action2/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,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p8,p15,p10,p14,p5,p12,p4,p1,p11,p6,p7,p13,p2,p16,p9">
<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="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardValidated=TRUE"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/Action3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="ATM,Account,Card">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p9,p14,p6,p7,p24,p10,p23,p3,p18,p22,p19,p12,p11,p26,p16,p17,p4,p2,p1,p25,p5,p21,p15,p8,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="InvalidCard" org.eventb.core.type="ℙ(Card)"/>
<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="ValidCard" org.eventb.core.type="ℙ(Card)"/>
<org.eventb.core.prIdent name="ac" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="active_atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atm_acbal" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="atm_card" org.eventb.core.type="ℙ(ATM×Card)"/>
<org.eventb.core.prIdent name="atm_cash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Card"/>
<org.eventb.core.prIdent name="card_account" org.eventb.core.type="ℙ(Card×Account)"/>
<org.eventb.core.prIdent name="idle" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="selfATM" org.eventb.core.type="ATM"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="selfATM∈active_atm"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈ValidCard"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="selfATM∈atm"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm_card(selfATM)=c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="card_account∈ValidCard ⤖ Account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(card_account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="InvalidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="active_atm∈ℙ(atm)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="idle∈ℙ(atm)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ValidCard∈ℙ(Card)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="card_account(c)=ac"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ac∈account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="selfATM∈dom(atm_cash)∧atm_cash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="atm_acbal∈atm ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="atm_card∈atm ⇸ ValidCard"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="card_account∈Card ⇸ Account"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="atm_card∈ATM ⇸ Card"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="atm_cash∈atm → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="selfATM∈dom(atm_card)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(atm,idle,active_atm)"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv2/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 × {0}∈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="start/inv2/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" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p11,p6,p10,p5,p8,p2,p1,p7,p4">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ MAX_CASH}∈atm∪{a} → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</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.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,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×CARD))∈(∅ ⦂ ℙ(ATM)) ⇸ (∅ ⦂ ℙ(CARD))"/>
<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.prProof>
<org.eventb.core.prProof name="start/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,p11" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p11,p6,p10,p5,p8,p2,p1,p7,p4">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈ATM ∖ atm"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtm∈atm∪{a} ⇸ atmCard"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/inv2/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" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p6,p14,p9,p13,p5,p11,p3,p1,p10,p7,p12,p4,p8">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ MAX_CASH}∈atm → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash(a)&lt;MIN_CASH"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ATM,Account,CARD">
<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,p10,p20,p13,p19,p6,p16,p3,p9,p14,p8,p18,p5,p7,p17,p1,p15,p21,p12,p4,p11">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ atmCash(a)+am}∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="reloadCash/grd2/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,p10,p11" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p9,p11,p6,p10,p5,p8,p2,p1,p7,p4">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/grd5/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,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="ATM,Account,CARD">
<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,p16,p10,p15,p5,p12,p3,p8,p11,p7,p14,p4,p6,p13,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/act2/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ATM,Account,CARD">
<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,p18,p11,p17,p5,p14,p3,p8,p12,p7,p16,p4,p6,p15,p1,p13,p19,p10">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="ejectCard/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,p11,p12,p13" org.eventb.core.prSets="ATM,Account,CARD">
<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p5,p12,p8,p11,p4,p10,p3,p1,p9,p7,p6,p13">
<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="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="cardValidated" org.eventb.core.type="BOOL"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cardValidated∈BOOL"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈CARD"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="cardInAtm ∖ {a ↦ c}∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="{a ↦ c}⊆cardInAtm"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/inv4/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="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="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="(∅ ⦂ ℙ(ACCOUNT×ℤ))∈ACCOUNT ⇸ ℕ"/>
<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.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,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="(∅ ⦂ ℙ(CARD×Account))∈(∅ ⦂ ℙ(CARD)) ↔ (∅ ⦂ ℙ(Account))"/>
<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.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="p1,p2,p3">
<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,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="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.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Account×ℤ))∈(∅ ⦂ ℙ(Account)) ⇸ ℕ"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="ATM,Account,CARD">
<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,p10,p20,p12,p18,p5,p15,p3,p9,p13,p8,p17,p4,p7,p16,p1,p14,p21,p11,p19,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="AccBalOnAtm{acc ↦ bal(acc)+am}∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/act3/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,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="ATM,Account,CARD">
<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,p18,p11,p17,p5,p14,p3,p8,p12,p7,p16,p4,p6,p15,p1,p13,p19,p10">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="AccBalOnAtm" org.eventb.core.type="ℙ(Account×ℤ)"/>
<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="acc" org.eventb.core.type="Account"/>
<org.eventb.core.prIdent name="account" org.eventb.core.type="ℙ(Account)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(Account×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAccount" org.eventb.core.type="ℙ(CARD×Account)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="atmCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="acc∈account"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="am∈ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cardAccount∈atmCard ↔ account"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈Account ⇸ ℤ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="validCard⊆atmCard"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c ↦ acc∈cardAccount"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="account∈ℙ(Account)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="cardInAtm∈atm ⇸ atmCard"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="AccBalOnAtm∈account ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="bal∈account → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="deposit/act1/WD"/>
<org.eventb.core.prProof name="INITIALISATION/act4/SIM"/>
<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="p1,p2,p3" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="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×CARD))∈ATM ⇸ CARD"/>
<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="Deposit/grd9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="a" org.eventb.core.type="ATM"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(cardInAtm)∧cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="Deposit/inv2/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="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p10,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p5,p12,p6,p14,p11,p15,p13,p8,p10,p1,p4,p3,p9,p7,p22,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.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="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="a∈ATM"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="atmCash{a ↦ atmCash(a)+am}∈ATM → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="Deposit/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18" org.eventb.core.prSets="ACCOUNT,ATM,CARD">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with cardInAtm(a)=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p5,p14,p7,p18,p12,p15,p6,p16,p10,p13,p1,p9,p4,p2,p11,p17,p8,p25,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.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="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="accBalOnAtm" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="am" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="atm" org.eventb.core.type="ℙ(ATM)"/>
<org.eventb.core.prIdent name="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="CARD"/>
<org.eventb.core.prIdent name="cardAcct" org.eventb.core.type="ℙ(CARD×ACCOUNT)"/>
<org.eventb.core.prIdent name="cardInAtm" org.eventb.core.type="ℙ(ATM×CARD)"/>
<org.eventb.core.prIdent name="validCard" org.eventb.core.type="ℙ(CARD)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="a∈dom(cardInAtm)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="atm∈ℙ(ATM)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="MAX_CASH∈ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="acc∈ACCOUNT"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="bal∈ℙ(ACCOUNT × ℤ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="a∈atm"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cardInAtm(a)∈validCard"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="cardInAtm(a)=c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="accBalOnAtm{acc ↦ bal(acc)+am}∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈validCard"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cardInAtm∈atm ⇸ CARD"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="cardInAtm∈ATM ⇸ CARD"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="MIN_CASH∈ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="cardInAtm(a) ↦ acc∈cardAcct"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="cardAcct∈ℙ(CARD × ACCOUNT)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="validCard⊆CARD"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="accBalOnAtm∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="am∈ℕ1"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="atmCash∈atm → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="MAX_CASH&gt;MIN_CASH"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="validCard∈ℙ(CARD)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="cardAcct∈CARD ⇸ ACCOUNT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="Deposit/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="Deposit/act2/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="atmCash" org.eventb.core.type="ℙ(ATM×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="a∈dom(atmCash)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="a∈dom(atmCash)∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="atmCash∈ATM → ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧atmCash∈ATM ⇸ ℤ"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="Deposit/act3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="acc" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="acc∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="acc∈dom(bal)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</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" org.eventb.core.prSets="ACCOUNT">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="bal" org.eventb.core.type="ℙ(ACCOUNT×ℤ)"/>
<org.eventb.core.prIdent name="dest_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prIdent name="src_ac" org.eventb.core.type="ACCOUNT"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="dest_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="bal∈ACCOUNT ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dest_ac∈dom(bal)∧bal∈ACCOUNT ⇸ ℤ∧src_ac∈dom(bal)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬src_ac=dest_ac"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="src_ac≠dest_ac"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="src_ac∈dom(bal)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>
